首页 > 解决方案 > 熊猫中的 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 中复制这个特殊的公式

标签: pythonexcelpandasnumpydataframe

解决方案


您可以使用groupby()过滤后的数据来计算总和并将map新列分配给事务数据。

s = df2[df2['On/Off']=='On'].groupby('C_ID')['Amount'].sum()
df1['Amount'] = df1['C_ID'].map(s)

推荐阅读