在Pandas中,如何在Groupby Object上使用Group mean应用自定义函数

时间:2015-12-17 06:38:33

标签: python pandas

这是我的输入数据。

df1= pd.DataFrame( np.random.randn(10,3), columns= list("ABC") )

      A         B         C
0  0.557303  1.657976 -0.091638
1 -0.769201  1.305553 -0.248403
2  1.251513 -0.634947  0.100130
3 -1.030045 -0.268972  1.328666
4  0.665483 -0.133410  0.151235
5  0.703294 -0.525490  0.109413
6  0.549441  0.002626 -0.005841
7  0.454866  1.094490 -1.946760
8 -0.152995 -0.736689 -0.367252
9 -0.632906  1.066869  0.303271

我想根据A列的值创建组。所以我首先切片A.并定义一个函数。然后我在Groupby Obj上使用apply方法。我期待新列是B和C之间的差异,而不是A组的平均值。

b=np.linspace(-1, 1,5)

def tmpF(x):
  x['newCol']= (x['B']-x['C'])/df1['A'].mean()
return x

df1.groupby(np.digitize(df1['A'],b)).apply(tmpF)

但是,我只使用整个列A的平均值。我知道df1 [' A']。mean()是错误的,但我不知道如何访问组的意思。 怎么解决?

1 个答案:

答案 0 :(得分:1)

您可以在功能df1['A']中将x['A']更改为tmpF

b=np.linspace(-1, 1,5)

def tmpF(x):
  x['newCol']= (x['B']-x['C'])/x['A'].mean()
return x

df1.groupby(np.digitize(df1['A'],b)).apply(tmpF)