使用 pd.Grouper 按月初分组的熊猫

Posted

技术标签:

【中文标题】使用 pd.Grouper 按月初分组的熊猫【英文标题】:Pandas grouping by start of the month with pd.Grouper 【发布时间】:2019-10-10 08:31:29 【问题描述】:

我有一个带有每小时时间戳的 DataFrame:

2019-01-01 0:00:00             1
2019-01-01 1:00:00             2
2019-01-11 3:00:00             1
2019-01-21 4:00:00             2
2019-02-01 0:00:00             1
2019-03-05 1:00:00             2
2019-03-21 3:00:00             1
2019-04-08 4:00:00             2

我正在使用 Pandas Grouper 每月对数据进行分组和汇总:

monthly_data = [pd.Grouper(freq='M', label='left')].sum()

预期输出:

2019-01-01 0:00:00             6
2019-02-01 0:00:00             1
2019-03-01 0:00:00             3
2019-04-01 0:00:00             2

实际输出:

2018-12-31 0:00:00             6
2019-01-31 0:00:00             1
2019-02-28 0:00:00             3
2019-03-30 0:00:00             2

如何让组的标签成为组中的第一个元素?

谢谢

【问题讨论】:

【参考方案1】:

使用频率 MS(月开始),而不是 M(月结束)。

见dateoffset objects in the docs。

【讨论】:

【参考方案2】:

使用resampleDatetimeIndex 上聚合:

df.resample('MS').sum()

            value
date             
2019-01-01      6
2019-02-01      1
2019-03-01      3
2019-04-01      2

【讨论】:

以上是关于使用 pd.Grouper 按月初分组的熊猫的主要内容,如果未能解决你的问题,请参考以下文章

pd.Grouper() 应用于日期时间时,更改原始日期列

使用熊猫按日期范围分组

熊猫在相对时间范围内通过另一个值获得平均值

如何使用熊猫按 10 分钟对时间序列进行分组

熊猫按块分组而不是单个值

来自按级别分组的多索引熊猫数据框的子图