Sumifs Excel公式在熊猫

时间:2020-05-11 12:59:44

标签: python excel pandas numpy dataframe

我已经看到很多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中复制此特定公式

2 个答案:

答案 0 :(得分:1)

您可以对过滤的数据使用groupby()来计算总和,并可以使用map将新列分配给交易数据。

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

答案 1 :(得分:0)

我们过滤reindex + df1['Amount']=df2.loc[df2['On/Off']=='On'].groupby(['C_ID']).Amount.sum().reindex(df1.C_ID).tolist() df1 Out[340]: transaction C_ID Amount 0 1 101 600 1 2 103 60 2 3 104 100 3 4 101 600 4 5 102 320 5 6 104 100 分配

123.4567
123,4567
123 4567