pandas - 大熊猫的分组总和
问题描述
假设我有一个如下所示的数据框:
Input
item_code qty
10034 5
4
3
10035 2
1
我想在 qty 列之后添加一个新的列名 total 并根据 item_code 列放置总和。
输出
item_code qty total
10034 5 12
4
3
10035 2 3
1
解决方案
使用 ifitem_code
是列:
df['total'] = df.groupby(df['item_code'].replace('',np.nan).ffill())['qty'].transform('sum')
使用 ifitem_code
是级别MultiIndex
:
df['total'] = df.groupby(level=0)['qty'].transform('sum')
如果需要删除重复的值(替换为空字符串)是可能的,但是得到混合值 - 带有数字的字符串,所以接下来的处理应该是有问题的:
df['total'] = df['total'].mask(df.index.get_level_values('item_code').duplicated(), '')
推荐阅读
- r - 泊松广义线性混合模型 (GLMM):lme4 和 glmmADMB 之间的硬决策
- sql - 在 presto 的列中计算布尔值从 True 到 False 和 False 到 True 的次数
- javascript - 使用香草javascript关闭模态时从正文中删除类
- sql - Dapper QueryMultiple 显示所有查询在 DB 上运行多次
- sql - SELECT 语句中的 POSTGRESQL 循环
- adobe - AEM 元数据架构编辑器表单不显示资产评级字段
- vb.net - 秒表和计时器精度
- asp.net - IIS 找不到带有主题的有效证书
- python - 计算每个唯一 ID 的两个单独数据帧中列值的增加/减少百分比
- javascript - 使用基于 API 响应的 useState 挂钩反应测试条件渲染