【问题标题】:Sumifs excel formula in Pandas熊猫中的 Sumifs excel 公式
【发布时间】:2020-08-27 00:46:33
【问题描述】:

我在这里看到很多 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 中复制这个特殊的公式

【问题讨论】:

    标签: python excel pandas numpy dataframe


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我们过滤groupby + 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-05
        • 1970-01-01
        • 1970-01-01
        • 2018-10-06
        • 1970-01-01
        • 2017-06-03
        • 1970-01-01
        相关资源
        最近更新 更多