groupby pandas dataframe 同时按日期和 id

Posted

技术标签:

【中文标题】groupby pandas dataframe 同时按日期和 id【英文标题】:groupby pandas dataframe by date and id simultaneously 【发布时间】:2020-04-12 00:48:36 【问题描述】:

考虑一个 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),但它们都仅根据日期汇总。

【问题讨论】:

【参考方案1】:

我认为同时分组是必要的,将Grouper 传递给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

【讨论】:

以上是关于groupby pandas dataframe 同时按日期和 id的主要内容,如果未能解决你的问题,请参考以下文章

将 pandas.core.groupby.SeriesGroupBy 转换为 DataFrame

如何将pandas dataframe进行groupby操作后得到的数据结构转换为dataframe?

pandas将初始dataframe基于分组变量拆分为多个新的dataframe使用groupby函数tuple函数dict函数(splitting dataframe multiple)

Dataframe Pandas 聚合和/或 groupby

Python pandas dataframe groupby 选择列

Pandas DataFrame groupby,跨列计数和求和