Python:使用.loc[]从DatetimeIndex的数据框中排除一年

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

假设我得到了以下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
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']

或者,对于稍短的版本,您有:


不幸的是,它没有得到实施。