将数据透视表从Series更改为DataFrame

时间:2016-02-17 06:18:48

标签: python pandas

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的列名显示在总和之上,以及如何对结果进行升序或降序排序。结果是一个系列而不是数据框,似乎是不可排序的?

Python:2.7.11和Pandas:0.17.1

1 个答案:

答案 0 :(得分: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