所以,我有这样的表: 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列时不会聚合原始行?
谢谢!
答案 0 :(得分: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