Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Pandas为Python中的每组列计算一些值_Python_Arrays_Pandas_Dataframe_Grouping - Fatal编程技术网

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

使用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

我有一个数据帧

输入

我需要在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   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