使用Pandas计算Python中每组列的一些值

时间:2018-05-18 11:20:16

标签: python arrays pandas dataframe grouping

我有一个DataFrame

输入

         A   B   C     D          
0      one  50   35  1.5  
1      two  30   40  2.0 
2      one  50   35  3.0 
3    three  40   35  3.5 
4      one  40   35  2.5

我需要在D列上应用数学函数并在其中填充新的E列,但在我需要对B和C列进行分组之前。例如,数学函数将应用于值为1.5和3.0的情侣(50) ,35)

B   C   A     D
50  35  one   1.5
        one   3.0

40  35  three 3.5
        one   2.5

30  40  two   2.0

使用自定义函数计算值,该函数在输入中接收numpy数组并输出具有相同长度的数组。

输出

         A   B   C     D   E          
0      one  50   35  1.5   4.5
1      two  30   40  2.0   4.5
2      one  50   35  3.0   3.5
3    three  40   35  3.5   6.8
4      one  40   35  2.5.  8.9

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

我认为返回Series需要GroupBy.transform与原始DataFrame相同:

def func(x):
    print (x)
    #custom function, e.g. multiple all together 
    return x.prod()

df['E'] = df.groupby(['B','C'])['D'].transform(func)
print (df)
       A   B   C    D   E
0    one  50  35  1.5  4.50
1    two  30  40  2.0  2.00
2    one  50  35  3.0  4.50
3  three  40  35  3.5  8.75
4    one  40  35  2.5  8.75