2016-02-17 27 views
1
df = pd.DataFrame({'A': [1, 1, 1, 2, 2, 2, 3, 3, 3], 
        'B': ['X', 'Y', 'Z'] * 3, 
        'C': [1, 2, 3, 1, 2, 3, 1, 2, 3]}) 
>>> df 
    A B C 
0 1 X 1 
1 1 Y 2 
2 1 Z 3 
3 2 X 1 
4 2 Y 2 
5 2 Z 3 
6 3 X 1 
7 3 Y 2 
8 3 Z 3 

result = df.pivot_table(index=['B'], values='C', aggfunc=sum) 
>>> result 
B 
X 3 
Y 6 
Z 9 
Name: C, dtype: int64 

如何讓C的列名顯示上面的總和,以及如何對結果進行升序或降序排序。結果是一系列不是數據框,似乎不可排序?將數據透視表從系列更改爲DataFrame

Python:2.7.11和Pandas:0.17.1

回答

0

你非常接近。請注意,值周圍的括號將結果強制轉換爲數據幀而不是一系列(即values=['C']而不是values='C')。

result = df.pivot_table(index = ['B'], values=['C'], aggfunc=sum) 

>>> result 
    C 
B 
X 3 
Y 6 
Z 9 

由於result現在是一個數據框,你可以在上面使用sort_values

>>> result.sort_values('C', ascending=False) 
    C 
B 
Z 9 
Y 6 
X 3 
+0

你將如何排序按照升序或者降序排列? – OldDogNewTricks

+0

'ascending = True'或'ascending = False' – Alexander