【发布时间】:2019-10-24 14:07:55
【问题描述】:
我正在尝试将一些数据分组到每四个星期一次的存储桶中,并使用pd.Grouper(key='created_at', freq='4W')。我希望这些组是这样的,如果我有从 2019 年 8 月 26 日到 2019 年 10 月 20 日的 8 周数据,第一组的范围从 2019 年 8 月 26 日到 2019 年 9 月 22 日,第二组分组范围从 2019-09-23 到 2019-10-20。但是,在使用 grouper 时,它不会以这种方式分组,而是锚定到第一个星期日并从那里计算四个星期,从而产生如下输出:
created_at
2019-09-01 317
2019-09-29 990
2019-10-27 645
Freq: 4W-SUN, dtype: int64
代替:
created_at
2019-08-26 1048
2019-09-23 904
Freq: 4W-SUN, dtype: int64
我尝试过的另一个选项是使用pd.Timedelta(weeks=4) 作为频率,如下所示:
df.groupby(pd.Grouper(key='created_at', freq=pd.Timedelta(weeks=4)).size()
但是,这仅在数据中的所有日期都可用时才有效。例如,如果数据直到 2019 年 8 月 30 日才开始,则组标签是不同的,因为它正在计算最早日期的增量。我正在考虑创建一个自定义偏移对象,但不确定这是否是正确的方向。
原始数据大致如下:
created_at
id
4324856 2019-08-26 12:38:51
4325472 2019-08-26 13:18:07
4325974 2019-08-26 13:47:09
4326205 2019-08-26 13:56:27
4326296 2019-08-26 13:57:35
包含与当前问题无关的附加列。
【问题讨论】:
-
您的原始输入是什么样的?
标签: python pandas pandas-groupby