2016-09-13 91 views
3

我有一個數據幀裏面是有格式的格式:大熊貓 - 改變數據框

level_0 level_1 counts 
0 back not_share 1183 
1 back share 1154 
2 back total 2337 
3 front not_share 697 
4 front share 1073 
5 front total 1770 
6 left not_share 4819 
7 left share 5097 
8 left total 9916 
9 other not_share 2649 
10 other share 2182 
11 other total 4831 
12 right not_share 1449 
13 right share 1744 
14 right total 3193 

我想這種形式轉化爲

level_0 share not_share total 
back 1154 1183  2337 
front 1073 697  1770 

等..

有沒有我可以使用的方法,或者我應該將其轉換爲本機Python數據類型,然後進行操作?

回答

4

使用groupbysum

df.groupby(['level_0', 'level_1']).counts.sum().unstack() 

enter image description here

+1

嗯,這是一個有趣(異常)方法! – MaxU

+1

@MaxU對於更小的'df's,這似乎更快。對於更大的(數百萬行),這兩種方法似乎均勻。 – piRSquared

3

您可以使用pivot_table()方法:

In [101]: df.pivot_table(index='level_0', columns='level_1', values='counts', aggfunc='sum') 
Out[101]: 
level_1 not_share share total 
level_0 
back   1183 1154 2337 
front   697 1073 1770 
left   4819 5097 9916 
other   2649 2182 4831 
right   1449 1744 3193