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