Python:使用.loc[]从DatetimeIndex的数据框中排除一年
假设我得到了以下pandas.DataFrame:Python:使用.loc[]从DatetimeIndex的数据框中排除一年,python,pandas,datetime,indexing,Python,Pandas,Datetime,Indexing,假设我得到了以下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
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
df.loc[~ '2012']
但当我想从数据框中排除一年时,唯一对我有效的代码是以下代码:
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
在我看来,这似乎有点复杂,与前一次相比,我从数据框中选择了一年。所以,我想问,如果有另一个更简单的解决方案,我会错过吗?大概是这样的:
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
df.loc[~ '2012']
或者,对于稍短的版本,您有:
不幸的是,它没有得到实施。