2017-04-03 48 views
2

鑑於數據幀:轉換索引大熊貓矩陣到一個平面數據幀

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',

A B C D E F 
0 foo 123 8 5 9 2 
2 bar 33 0 0 3 5 

我嘗試:

'使用其他列()' A」和 'B')作爲鍵來實現 'E',F
df.groupby(['A', 'B']).sum() 

[出]:

 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 

回答

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 
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