2014-06-09 60 views
0

所以扩大和专栏中,我有表是这样的: DF:如何使用熊猫据帧

A B C D 
0 1 1 0 7 
1 1 1 0 9 
2 1 1 1 5 
3 1 1 1 3 

df.groupby(['A','B','C']).sum()后我得到:

A B C D 
0 1 1 0 16 
1 1 1 1 8 

通过什么方法我可以得到

A B C D 
0 1 1 0 16 
1 1 1 0 16 
2 1 1 1 8 
3 1 1 1 8 

这将不会聚合原来的行,而得到sum列?

谢谢!

回答

1

IIUC,你想transform:它做聚合,但返回一个对象的索引方式与原来的相同。

>>> df 
    A B C D 
0 1 1 0 7 
1 1 1 0 9 
2 1 1 1 5 
3 1 1 1 3 
>>> df.groupby(["A", "B", "C"]).transform('sum') 
    D 
0 16 
1 16 
2 8 
3 8 
>>> df["D"] = df.groupby(["A", "B", "C"]).transform('sum') 
>>> df 
    A B C D 
0 1 1 0 16 
1 1 1 0 16 
2 1 1 1 8 
3 1 1 1 8