我有一个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
有人可以帮助我吗?
答案 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