Skip to main content
 首页 » 编程设计

python之对 Pandas 数据框中的一列求和,其中一列满足条件,但由另一列分组

2025年05月04日14java哥

我有一个这样的数据框:

        Ref_No  Definition  Total_to_Add 
    0   ref1        B            20         
    1   ref2        A            30         
    2   ref1        B            40         
    3   ref2        A            50         
    4   ref1        B            60         
    5   ref2        B            50          
    6   ref1        B            60         
    7   ref2        B            50         
    8   ref1        B            60         

对于每个引用,如果它们是“B”和相同的引用编号,我想对 Total_to_Add 求和(我将为 A 设置另一列)。有 100 个引用编号。

我可以像这样总结那些满足单一条件的:

df['ANSWER'] = df[df['Definition']=='A']['Total_to_Add'].sum() 

或者我可以按这样的引用分组:

df['ANSWER']=(df.groupby('Ref_No')['Total_to_Add'].transform('sum')) 

但我似乎无法组合这些功能,即创建一个新列,如果定义为“B”并按 Ref_No 进行总计。

我的目标是像下面这样的输出:

        Ref_No  Definition  Total_to_Add  Total_'B' 
    0   ref1        B            20        240 
    1   ref2        A            30        100 
    2   ref1        B            40        240 
    3   ref2        A            50        100 
    4   ref1        B            60        240 
    5   ref2        B            50        100  
    6   ref1        B            60        240 
    7   ref2        B            50        100 
    8   ref1        B            60        240 

任何智慧表示赞赏!谢谢

请您参考如下方法:

尝试:

df['Total_B'] = (df['Definition'].eq('B').mul(df['Total_to_Add']) 
                 .groupby(df['Ref_No']).transform('sum')) 

[输出]

  Ref_No Definition  Total_to_Add  Total_B 
0   ref1          B            20      240 
1   ref2          A            30      100 
2   ref1          B            40      240 
3   ref2          A            50      100 
4   ref1          B            60      240 
5   ref2          B            50      100 
6   ref1          B            60      240 
7   ref2          B            50      100 
8   ref1          B            60      240