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