Pandas groupby 并与当前月份相加

这是我正在使用的 df 的前 10 行:



     id        user_id  session_date mb_used


0   1000_13     1000    2018-12-29  89.86

1   1000_204    1000    2018-12-31  0.00

2   1000_379    1000    2018-12-28  660.40

3   1000_413    1000    2018-12-26  270.99

4   1000_442    1000    2018-12-27  880.22

5   1001_0      1001    2018-08-24  284.68

6   1001_3      1001    2018-12-09  656.04

7   1001_4      1001    2018-11-04  16.97

8   1001_10     1001    2018-11-27  135.18

9   1001_15     1001    2018-12-13  761.92

我的问题是:如何找到每月每个 user_id 的 mb_used 总量?这意味着我必须首先隔离每个 user_id,找出他们在同一个月内使用了多少行数据,然后将它们相加以获得每个用户的“每月使用的数据”。我可以使用数据透视表来查找每个用户使用此代码使用的总数据: internet_per_user = pd.pivot_table(internet, index = 'user_id', columns='mb_used',aggfunc='sum') 但我无法合并每月方面。


对于上面发布的 10 行,我希望输出看起来像这样(手工计算):



user_id Month mb_used

1000    12    1901.47

1001    08    284.68

1001    12    1417.96

1001    11    152.15


鸿蒙传说
浏览 101回答 1
1回答

慕田峪4524236

您需要对每个月的用户 ID 进行分组并计算总和。您可以使用:df['session_date'] = pd.to_datetime(df['session_date'], errors='coerce')(df.groupby(['user_id', df['session_date'].dt.month])['mb_used']   .sum()   .reset_index())   user_id  session_date  mb_used0     1000            12  1901.471     1001             8   284.682     1001            11   152.153     1001            12  1417.96
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python