2
我试图在将两个“行标签”(Excel术语)放在数据透视表中后按降序排列数据透视表的值。排序数据透视表(多索引)
样本数据:
x = pd.DataFrame({'col1':['a','a','b','c','c', 'a','b','c', 'a','b','c'],
'col2':[ 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3],
'col3':[ 1,.67,0.5, 2,.65, .75,2.25,2.5, .5, 2,2.75]})
print(x)
col1 col2 col3
0 a 1 1.00
1 a 1 0.67
2 b 1 0.50
3 c 1 2.00
4 c 1 0.65
5 a 2 0.75
6 b 2 2.25
7 c 2 2.50
8 a 3 0.50
9 b 3 2.00
10 c 3 2.75
要创建枢轴,我使用下列的函数:
pt = pd.pivot_table(x, index = ['col1', 'col2'], values = 'col3', aggfunc = np.sum)
print(pt)
col3
col1 col2
a 1 1.67
2 0.75
3 0.50
b 1 0.50
2 2.25
3 2.00
c 1 2.65
2 2.50
3 2.75
在话,该变量pt
首先由col1
排序,然后通过数值col2
在col1
之内,然后在col3
之内。这很好,但我想排序col3
(值),同时保持在col2
(这一列可以是任何顺序和洗牌)的分组。
目标输出量会是这个样子(col3
与任何顺序降序排列col2
与该组的col1
):
col3
col1 col2
a 1 1.67
2 0.75
3 0.50
b 2 2.25
3 2.00
1 0.50
c 3 2.75
1 2.65
2 2.50
我曾尝试下面的代码,但是这只是排序整个枢纽表值和失去分组(我正在寻找在组内排序)。
pt.sort_values(by = 'col3', ascending = False)
指导,类似的问题被问(回答)在这里,但我无法获得与所提供的输出端的成功输出:
我从得到的错误答案是ValueError: all keys need to be the same shape