Pandas groupby 多列基础日期列按纪元周

Posted

技术标签:

【中文标题】Pandas groupby 多列基础日期列按纪元周【英文标题】:Pandas groupby multiple columns basis date column by epoch week 【发布时间】:2020-07-30 18:23:46 【问题描述】:

我想根据日期列总结我在数据框中获得的三列。这里的问题是总结应该基于纪元周范围。 例如:纪元第 14 周是从 2020 年 3 月 30 日到 2020 年 4 月 5 日,第 15 周是从 2020 年 4 月 6 日到 2020 年 4 月 15 日,依此类推。 date_time 列已采用正确的日期时间格式。 纪元周可以在这里找到:epochweek

我的数据框如下所示:

   date_time                    A        B
0  01/04/2020  00:00:00         5        10
1  02/04/2020  00:00:00         5        10
2  03/04/2020  00:00:00         1        10
3  07/04/2020  00:00:00         2        10
4  08/04/2020  00:00:00         2        10
5  10/04/2020  00:00:00         3        10

输出应如下所示:

epoch_week       sum_A       sum_B
week14           11          30
week15           7           30
Total            18          60

【问题讨论】:

【参考方案1】:

Series.dt.weekofyear 与日期时间一起使用并聚合sum

g = pd.to_datetime(df['date_time'], dayfirst=True).dt.weekofyear

df = df.groupby(g.rename('epoch_week')).sum().reset_index()
print (df)
   epoch_week   A   B
0          14  11  30
1          15   7  30

编辑:

g = pd.to_datetime(df['date_time'], dayfirst=True).dt.weekofyear

df = df.groupby(g.rename('epoch_week')).sum()
df.loc['Total'] = df.sum()
df = df.reset_index()

【讨论】:

太棒了!谢谢! 还有一件事,我怎样才能得到 sum_A、sum_B 列的总计? @Django0602 - 你能在问题中添加预期的输出吗? 我已经添加了预期的输出。仅在计算周数后才会显示总数。 完美!谢谢!

以上是关于Pandas groupby 多列基础日期列按纪元周的主要内容,如果未能解决你的问题,请参考以下文章

Pandas Groupby 独特的多列

pandas pivot 或 groupby 多列和控制列

使用多列的 Pandas groupby 函数

pandas groupby 聚合具有多列的自定义函数

t 测试 groupby pandas 之后的多列

Pandas 一次缩放多列并使用 groupby() 进行逆变换