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