python - 多层次的 Groupby 和 Sum
问题描述
我有一个具有以下初始化的数据框,我想查找“a”列中的值是否存在于“b”列中。然后,如果该值存在,我想要列“c”的所有相应值的总和。
不适用
df = pd.DataFrame({'a': [1,2,3, 1, 4, 1, 2],
'b': [1,5,1, 2, 3, 1, 3],
'c': [10,20,40, 50, 60, 70, 100]})
示例结果在下面的图片链接中:
解决方案
df[['a','b']].join(df.groupby('b').c.sum(),on='a').fillna(0, downcast='infer')
或者
df.groupby('b').c.sum().reindex(df.a,fill_value=0).reset_index().assign(b=df.b).sort_index(axis=1)
或者
df.assign(c = df.groupby('b').c.sum().reindex(df.a, fill_value=0).reset_index(drop=True))
推荐阅读
- c# - 如何在 C# 中使用 Microsoft.Azure.Management.Automation AutomationClient 启动 Azure Runbook/webhook?
- c++ - 错误:未在此范围内声明“sumProduct”
- ios - yarn run ios - 错误:找不到模块 - React Native
- powershell-4.0 - 在powershell中创建一个环回,直到满足变量
- dc.js - 如何在我的交叉过滤器组中使用自定义减少功能?
- excel - VBA Excel 查找 2 个动态范围之间的值
- javascript - 通过 socket.io 发送 var
- c# - 使用双精度列表中的 foreach 循环创建字符串列表。每两个值必须压缩成一个字符串,然后添加到列表中
- c++ - 标头中的 inline 和 constexpr 无捕获 lambda 有什么区别?
- php - PHP Soap 客户端请求使用单个字符串回答