【发布时间】:2016-09-07 05:17:16
【问题描述】:
第 3 集:
在part 2 中,我们保留了索引的分层特性,同时在最右边的级别内进行排序。在part 1 中,我们将自定义排序应用于最左侧的索引级别,同时对最右侧索引中的值进行排序。
现在,我想结合这两种方法。
给定以下数据框和生成的数据透视表:
import pandas as pd
df=pd.DataFrame({'A':['a','a','a','a','a','b','b','b','b'],
'B':['x','y','z','x','y','z','x','y','z'],
'C':['a','b','a','b','a','b','a','b','a'],
'D':[7,5,3,4,1,6,5,3,1]})
df
A B C D
0 a x a 7
1 a y b 5
2 a z a 3
3 a x b 4
4 a y a 1
5 b z b 6
6 b x a 5
7 b y b 3
8 b z a 1
table = pd.pivot_table(df, index=['A', 'B','C'],aggfunc='sum')
table
D
A B C
a x a 7
b 4
y a 1
b 5
z a 3
b x a 5
y b 3
z a 1
b 6
我想指定“B”的自定义顺序。 这似乎有效:
df['B']=df['B'].astype('category')
df['B'].cat.set_categories(['z','x','y'],inplace=True)
接下来,我希望数据透视表保持上面指定的“B”顺序,同时在“B”的每个类别中对值“D”进行降序排序。
像这样:
D
A B C
z a 3
x a 7
a b 4
y b 5
a 1
z b 6
b a 1
x a 5
y b 3
提前致谢!
【问题讨论】:
标签: sorting python-3.x pandas pivot-table