groupby按日期和id同时显示数据帧

2024-05-16 18:13:30 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑csv文件:

customer    consumption     datetime
1           0.970           2013-06-29 19:00:00
1           0.625           2013-06-29 19:30:00
1           0.153           2013-06-29 20:00:00
1           0.484           2013-06-29 20:30:00
1           0.489           2013-06-29 21:00:00
1           0.970           2013-06-30 19:00:00
1           0.625           2013-06-30 19:30:00
1           0.153           2013-06-30 20:00:00
1           0.484           2013-06-30 20:30:00
1           0.489           2013-06-30 21:00:00
2           0.461           2013-06-29 19:00:00
2           0.894           2013-06-29 19:30:00
2           0.848           2013-06-29 20:00:00
2           0.977           2013-06-29 20:30:00
2           0.189           2013-06-29 21:00:00
2           0.461           2013-06-30 19:00:00
2           0.894           2013-06-30 19:30:00
2           0.848           2013-06-30 20:00:00
2           0.977           2013-06-30 20:30:00
2           0.189           2013-06-30 21:00:00

我想计算每个顾客每天的总(平均)消费量。我可以使用以下工具轻松地聚合每天的数据:

df.resample('D').mean()

但这会为所有客户汇总数据,相反,我希望每天为每个客户汇总消费量。我浏览了发布的大多数文章(here),但它们都是基于日期聚合的


Tags: 文件工具csv数据dfdatetime客户here
1条回答
网友
1楼 · 发布于 2024-05-16 18:13:30

我认为同时分组是必要的,通过^{}groupby

df['datetime'] = pd.to_datetime(df['datetime'])
df1 = (df.groupby(['customer', pd.Grouper(freq='D', key='datetime')])['consumption']
         .mean()
         .reset_index())
print (df1)
   customer   datetime  consumption
0         1 2013-06-29       0.5442
1         1 2013-06-30       0.5442
2         2 2013-06-29       0.6738
3         2 2013-06-30       0.6738

相关问题 更多 >