【发布时间】:2020-03-27 13:35:33
【问题描述】:
目前有一个按系列显示国家/地区的数据框,值范围为 0-25
我想对 df 进行排序,使最高值出现在左上角(第一个),而最低值出现在右下角(最后一个)。
来自
A B C D ...
USA 4 0 10 16
CHN 2 3 13 22
UK 2 1 8 14
...
到
D C A B ...
CHN 22 13 2 3
USA 16 10 4 0
UK 14 8 2 1
...
此时,数值最高的列在前,索引也是如此。
我考虑过重新索引,但这会丢失“国家/地区”索引。
D C A B ...
0 22 13 2 3
1 16 10 4 0
2 14 8 2 1
...
我考虑过创建一个新的列和行,其中包含相应列/行的平均值或总和,但这是最有效的方法吗?
获得新行/列后,我将如何对 DF 进行排序??
有没有办法重新索引使用...
df_mv.reindex(df_mv.mean(or sum)().sort_values(ascending = False).index, axis=1)
...这样我就可以保留国家索引,并简单地对其进行相应的排序?
感谢您的任何建议或帮助。
编辑
预期结果按从大到小的排列列和行。
关于预期输出中 A 列和 B 列的第一行,它们应该分别为 2、3。这是因为预期结果将 A 列解释为总和和均值均大于 B 列(即使可以将总和或均值视为行/列的“值”)。
通过说较高的数字将在左上角,而较低的数字将在右下角,我只是说这是结果 df 的总体趋势。然而,整个列和行才是预期的焦点。对于造成的混乱,我深表歉意。
【问题讨论】:
-
你不应该在结果的第一行末尾得到
3, 2吗? -
请原谅歧义,谢谢大家的回答!将编辑帖子以更好地反映预期输出...
标签: python pandas sorting dataframe indexing