【问题标题】:groupby pandas dataframe by date and id simultaneouslygroupby pandas dataframe 同时按日期和 id
【发布时间】: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),但它们都仅根据日期汇总。

【问题讨论】:

    标签: python pandas datetime


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2021-07-17
      • 1970-01-01
      • 2014-05-18
      • 2019-01-31
      • 2017-06-27
      • 1970-01-01
      相关资源
      最近更新 更多