Python: исключить один год из фрейма данных с DatetimeIndex, используя .loc [] - PullRequest
0 голосов
/ 26 марта 2020

Допустим, у меня есть следующее 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']

1 Ответ

1 голос
/ 26 марта 2020

В качестве альтернативы для более короткой версии у вас есть DatetimeIndex.year:

df[df.index.year!=2012]
...