熊猫groupby条件行总和

时间:2019-03-20 17:08:36

标签: python pandas apply pandas-groupby

我有一个如下数据框:

df = pd.DataFrame({'col_1': [2,2,2,3,3,3,3],
                   'col_2': [1,2,3,1,2,3,4],
                   'col_3':['A','A','A','B','B','B','B']})
   col_1  col_2 col_3
0      2      1     A
1      2      2     A
2      2      3     A
3      3      1     B
4      3      2     B
5      3      3     B
6      3      4     B

我想用col_2对行中的col_1 >= col_2求和。

所需的输出应为:

   col_1  col_2 col_3  col_4
0      2      1     A      3
1      2      2     A      3
2      2      3     A      3
3      3      1     B      6
4      3      2     B      6
5      3      3     B      6
6      3      4     B      6

我来到:

df.groupby(['col_3']).apply(lambda x: x.loc[x['col_1'] >= x['col_2']]['col_2'].sum())

但是,当数据变大(数百万行)时,此方法将非常慢,有没有更有效的方法?

1 个答案:

答案 0 :(得分:0)

只需提前进行条件数学即可。

interface Addition { 
    add(num1:number, num2:number): number;
}
class Calculator implements addition {
    add(num1: number, num2: number): number { 
        return num1 + num2;
    }    

    sub(num1: number, num2: number): number { 
        return num1 - num2;
    }
}