python - 熊猫中的 Sumifs excel 公式
问题描述
我已经看到这里回答了很多 SUMIFS 问题,但与我需要的问题有很大不同。
第一个交易数据帧包含交易 ID 和 C_ID
transaction C_ID
1 101
2 103
3 104
4 101
5 102
6 104
第二个客户数据框包含 C_ID、开/关、金额
C_ID On/Off Amount
102 On 320
101 On 400
101 On 200
103 On 60
104 Off 80
104 On 100
所以我想根据 C_ID 计算金额,条件是客户数据框中的“开/关”列。生成的交易数据框应该是
transaction C_ID Amount
1 101 600
2 103 60
3 104 100
4 101 600
5 102 320
6 104 100
所以这是EXCEL中关于如何计算金额的公式
=SUMIFS(Customer.Amount, Customer.C_ID = Trade.C_ID, Customer.On/Off = On)
所以我想用 Pandas 在 Python 中复制这个特殊的公式
解决方案
您可以使用groupby()
过滤后的数据来计算总和并将map
新列分配给事务数据。
s = df2[df2['On/Off']=='On'].groupby('C_ID')['Amount'].sum()
df1['Amount'] = df1['C_ID'].map(s)
推荐阅读
- vba - VBA 数据透视表总和/计数按钮
- json - swift 4 timeIntervalSinceReferenceDate 而不是 JSONSerialization 之后的实际日期字符串
- windows - How do you source User envvars in PowerShell?
- node.js - 如何使用 slack-node 发送 html 报告?
- java - 找不到任务“组装”。构建项目
- java - JavaEE 6 - EJB - 使用 ExecutorService
- python - 将csv写入外部文件
- r - 将字符串拆分为列,然后将值分配给正确的变量
- c++ - 循环一个 typedef 列表
- c# - 更新图像错误“必须声明标量变量“@SmstockId”