我正在尝试使用 pandas 类 Grouper 按日期对数据进行分组。 我的数据是每周的,我可以轻松地按月对其进行分组,如下所示:
data.groupby(pd.Grouper(freq = 'M').sum()
我还想按双月或学期进行分组,但是,这两个不是记录频率的一部分(请参阅此处)。
有办法做到这一点吗?
玩具示例:
假设我们有如下每周数据,我们希望将其转换为每月频率并对 px 列的值求和:
df = pd.DataFrame({
'date':pd.date_range('2020.05.01', periods=12, freq='W'),
'px':np.arange(12)
})
df
输入df
date px
0 2020-05-03 0
1 2020-05-10 1
2 2020-05-17 2
3 2020-05-24 3
4 2020-05-31 4
5 2020-06-07 5
6 2020-06-14 6
7 2020-06-21 7
8 2020-06-28 8
9 2020-07-05 9
10 2020-07-12 10
11 2020-07-19 11
我们可以通过两种方式将其转换为月份频率。
使用重新采样
df.resample('M', on='date').sum()
使用石斑鱼
df.groupby(pd.Grouper(key='date', freq='M')).sum()
输出
px
date
2020-05-31 10
2020-06-30 26
2020-07-31 30
pd.Grouper和resample之间的区别