使用Pandas为Python中的每组列计算一些值
我有一个数据帧 输入 我需要在D列上应用一个数学函数,并用它填充一个新的E列,但在我需要对B列和C列进行分组之前。例如,数学函数将应用于耦合(50,35)的值1.5和3.0 这些值由一个自定义函数计算,该函数在输入时接收numpy数组,在输出时接收长度相同的数组 输出使用Pandas为Python中的每组列计算一些值,python,arrays,pandas,dataframe,grouping,Python,Arrays,Pandas,Dataframe,Grouping,我有一个数据帧 输入 我需要在D列上应用一个数学函数,并用它填充一个新的E列,但在我需要对B列和C列进行分组之前。例如,数学函数将应用于耦合(50,35)的值1.5和3.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
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
有人能帮我吗?我认为需要返回与原始数据帧大小相同的系列:
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
@阿美·塔沃里-谢谢你。
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
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