如何在熊猫时间序列中获得一个月的所有行而不考虑年份?

Posted

技术标签:

【中文标题】如何在熊猫时间序列中获得一个月的所有行而不考虑年份?【英文标题】:How to get all rows of a month irrespective of year in a pandas time series? 【发布时间】:2019-12-19 17:59:46 【问题描述】:

我正在尝试使用 pandas 数据框进行时间序列分析,发现有一些简单的方法可以选择特定列,例如一年中的所有行、两个日期之间等。

例如,考虑

ind = pd.date_range('2004-01-01', '2019-08-13')
data = np.random.randn(len(ind))
df = pd.DataFrame(d, index=ind)

在这里,我们可以选择日期 '2014-01-23' 和 '2014-06-18' 之间的所有行

df['2014-01-23':'2014-06-18']

以及“2015”年的所有行

df['2015']

是否有类似的方法来选择属于特定月份但所有年的所有行?

我找到了获取特定月份的所有行特定年份的方法,语法类似于

df['01-2015']  #all rows of January 2015

我希望 pandas 能够通过简单的语法获取一个月的所有行,而不管年份如何。有这样的方式吗?

【问题讨论】:

【参考方案1】:

使用DatetimeIndex.month,与boolean indexing进行比较和过滤:

print (df[df.index.month == 1])
                   0
2004-01-01  2.398676
2004-01-02  2.074744
2004-01-03  0.106972
2004-01-04  0.294587
2004-01-05  0.243768
             ...
2019-01-27 -1.623171
2019-01-28 -0.043810
2019-01-29 -0.999764
2019-01-30 -0.928471
2019-01-31 -0.304730

[496 rows x 1 columns]

【讨论】:

以上是关于如何在熊猫时间序列中获得一个月的所有行而不考虑年份?的主要内容,如果未能解决你的问题,请参考以下文章

无法单独选择行而不分组

熊猫过滤具有特定年份的数据框行

显示所有textarea行而不滚动[重复]

如何在熊猫数据框中对字符串进行排序或检查等效性而不考虑顺序?

mysql - 从多个表中获取相关行而不使用所有组合

我如何获得一个月的最后一天?