2016-09-28 76 views
1

我有一个像如何划分与大小之和在大熊猫GROUPBY

ID_0 ID_1 ID_2 
0 a b  1 
1 a c  1 
2 a b  0 
3 d c  0 
4 a c  0 
5 a c  1 

一个数据帧我想GROUPBY [“ID_0”,“ID_1”],并产生具有总和了新的数据帧每组的ID_2值除以每组中的行数。

grouped = df.groupby(['ID_0', 'ID_1']) 
print grouped.agg({'ID_2': np.sum}), "\n", grouped.size() 

  ID_2 
ID_0 ID_1 
a b  1 
    c  2 
d c  0 
ID_0 ID_1 
a  b  2 
     c  3 
d  c  1 
dtype: int64 

我怎样才能获得新的数据框与大小()值除以np.sum值?

+2

是不是你要找的只是什么意思呢?即'df.groupby(['ID_0','ID_1'])。mean()' – root

+0

@root在这种情况下你是对的!但我真的想知道一般的方法。 – eleanora

回答

1

使用groupby.apply代替:

df.groupby(['ID_0', 'ID_1']).apply(lambda x: x['ID_2'].sum()/len(x)) 

ID_0 ID_1 
a  b  0.500000 
     c  0.666667 
d  c  0.000000 
dtype: float64 
+0

谢谢!我如何从此做出正确的数据框?这是与完整写出的行。 – eleanora

+0

只需在末尾添加'.reset_index(name ='ID_2')'。 –