【发布时间】:2020-07-06 20:30:06
【问题描述】:
假设我有以下 pandas.DataFrame:
df = pd.DataFrame(
{'avg': list(range(100, 900, 100)), 'median': list(range(150, 950, 100))},
index=pd.date_range('2011-12-01', periods=8, freq='3M')
)
print(df)
avg median
2011-12-31 100 150
2012-03-31 200 250
2012-06-30 300 350
2012-09-30 400 450
2012-12-31 500 550
2013-03-31 600 650
2013-06-30 700 750
2013-09-30 800 850
当我想从数据框中提取一年时,我像这样使用.loc[]:
print(df.loc['2012'])
avg median
2012-03-31 200 250
2012-06-30 300 350
2012-09-30 400 450
2012-12-31 500 550
但是当我想从数据框中排除一年时,唯一真正适合我的代码是以下代码:
print(df.loc[df.index.to_period('Y') != 2012])
avg median
2011-12-31 100 150
2013-03-31 600 650
2013-06-30 700 750
2013-09-30 800 850
在我看来,与前一个相比,我从数据框中选择了一年,这有点复杂。所以,我想问一下,如果还有其他更简单的解决方案,我会错过吗?像这样的:
df.loc[~ '2012']
【问题讨论】:
-
很遗憾,它没有实现。
标签: python pandas datetime indexing