【问题标题】:Python: exclude one year from data frame with DatetimeIndex using .loc[]Python:使用 .loc[] 从具有 DatetimeIndex 的数据框中排除一年
【发布时间】: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


【解决方案1】:

或者,对于稍短的版本,您可以使用 DatetimeIndex.year

df[df.index.year!=2012]

【讨论】:

    猜你喜欢
    • 2021-05-20
    • 2020-11-28
    • 1970-01-01
    • 2018-08-18
    • 2016-04-02
    • 2019-12-12
    • 2019-01-28
    • 2019-07-10
    • 2019-09-18
    相关资源
    最近更新 更多