鉴于数据框:
df = pd.DataFrame([['foo', 123, 4, 5, 0, 1], ['foo', 123, 4, 0, 9, 1], ['bar', 33, 0, 0, 3, 5]], columns=list('ABCDEF'))
[OUT]:
A B C D E F
0 foo 123 4 5 0 1
1 foo 123 4 0 9 1
2 bar 33 0 0 3 5
目标是将某些列('C','D','E',F')用其他列('A'和'B')作为键来实现:
A B C D E F
0 foo 123 8 5 9 2
2 bar 33 0 0 3 5
我试过了:
df.groupby(['A', 'B']).sum()
[OUT]:
C D E F
A B
bar 33 0 0 3 5
foo 123 8 5 9 2
如何将其更改回非索引矩阵?即。
A B C D E F
0 foo 123 8 5 9 2
2 bar 33 0 0 3 5
答案 0 :(得分:2)
您需要添加.reset_index()
。
df.groupby(['A','B']).sum().reset_index()
A B C D E F
0 bar 33 0 0 3 5
1 foo 123 8 5 9 2
或
df.set_index(['A','B']).sum(level=[0,1]).reset_index()
A B C D E F
0 bar 33 0 0 3 5
1 foo 123 8 5 9 2
答案 1 :(得分:2)
您可以使用参数as_index=False
返回df
:
df1 = df.groupby(['A', 'B'], as_index=False).sum()
print (df1)
A B C D E F
0 bar 33 0 0 3 5
1 foo 123 8 5 9 2