我有一個包含 4 行和多列的交叉表,其中包含數值(表示兩個因子交叉時的資料集元素的數量)。我想按每列中值的總和對交叉表中列的順序進行排序。例如我有:
ct = pd.crosstab(df_flt_reg['experience'], df_flt_reg['region'])
| a| b| c| d| e|
0 | 1| 0| 7| 3| 6|
1 | 2| 4| 1| 5| 4|
2 | 3| 5| 0| 7| 2|
3 | 1| 3| 1| 9| 1|
(sum)| 7| 12| 9| 24| 13| # row doesn't exist, written here to make clear the logic
我想要什么:
| d| e| b| c| a|
0 | 3| 6| 0| 7| 1|
1 | 5| 4| 4| 1| 2|
2 | 7| 2| 5| 0| 3|
3 | 9| 1| 3| 1| 1|
(sum)| 24| 13| 12| 9| 7|
我只成功地按名稱(按字母順序)對列進行排序,但這不是我需要的。我嘗試分別對這些值求和,列出正確排序的索引,然后通過“by”引數將它們發送給 crosstab.sort_values(),但它再次按字母順序排序。我也嘗試創建一個新行“sum”,但成功地只創建了一個新列-_- 所以我謙虛地尋求社區的幫助。
uj5u.com熱心網友回復:
計算總和并對值進行排序。一旦你有排序的系列得到索引并用它重新排列你的列。
sorted_df = ct[ct.sum().sort_values(ascending=False).index]
d e b c a
0 3 6 0 7 1
1 5 4 4 1 2
2 7 2 5 0 3
3 9 1 3 1 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/524017.html
下一篇:根據條件連接2個資料幀
