python - 熊猫 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
解决方案
您将需要对每个月的用户 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_used
0 1000 12 1901.47
1 1001 8 284.68
2 1001 11 152.15
3 1001 12 1417.96
推荐阅读
- wpf - 为数据模板项设置数据上下文
- python - 如何创建一个接收日期参数列表的函数?
- angular - 有没有办法向 Angular Material Components(底页/对话框/Snackbar)添加指令?
- r - 应用于数据帧列表的函数中的 write.table 覆盖输出
- c# - 当我尝试 JsonConvert.DeserializeObject 时,我的 xamarin 应用程序冻结
- mysql - 如何在mysql中显示每一行的计数?
- c# - .Net Core 3.1 Jwt Validate Issuer 似乎不起作用
- python - 检查 value 是否是给定数量的值之一 - set vs. tuple vs. list
- python - 无法在其中创建带有 pip 的虚拟环境/无法在虚拟环境中运行 python
- fullcalendar - 完整日历 v3 在列表视图中将显示扩展到日历年结束之后