【发布时间】:2020-04-23 06:28:16
【问题描述】:
我有一个熊猫表,例如:
Entries Col1 Col2 Col3 Col4
Entry1 -1.46 93.93 3.33 92.51
Entry2 -48.59 31.49 -22.97 80.25
Entry3 8.24 95.85 -5.05 90.29
我想根据所有 4 列对条目进行排序。第 1 列和第 3 列应按更接近 0 的顺序排列,第 2 列和第 4 列应按最高数排列。
目前我有这样的事情:
data.sort_values(cols, ascending=[False,True,False,True],inplace=True)
但这只是按第一列排序,而其他列对排序无关紧要。我需要按所有列对条目进行排序。如果条目 1 仅在第 1 列中最好,条目 2 在其他 3 中最好,则条目 3 应排在最前面。
预期输出:
Entries Col1 Col2 Col3 Col4
Entry1 -1.46 93.93 3.33 92.51
Entry3 8.24 95.85 -5.05 90.29
Entry2 -48.59 31.49 -22.97 80.25
条目 1 在 Col:1,3 和 4 中最好 条目 2 在所有列中都更差 条目 3 在 Col2 中最好,在其他中第二。
谢谢。
【问题讨论】:
-
你能添加你的预期输出吗?
-
您能显示示例表的输出吗?您想单独对列进行排序而不取整行吗?还是按所有列的权重进行排序?
-
我相信您的排序目标在问题中不是很清楚。您说“接近 0”,但您对该列进行排序而不采用绝对值。也许您想要做的是根据您的目标获取各个列的百分位排名,然后在新列中平均这些排名并对新列进行排序?
-
我已经添加了预期的输出。问题是我有一个很大的条目和值列表。这些值的值都在 -100 和 +100 之间,我需要根据它们的整体排序/排名对行进行排序 - 创建一个基于所有其他列的附加列“排名”将是一个好主意,但我只能目前独立排序
标签: python pandas sorting multiple-columns rank