我有一个熊猫表,例如:
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中最好所有Col的条目2都更糟条目3在Col2中排名第一,在其他方面排名第二。
谢谢。
Col1a和Col3a保持各个源列的绝对值:
data['Col1a'] = data.Col1.abs()
data['Col3a'] = data.Col3.abs()
排序您的DataFrame:data.sort_values(['Col1a', 'Col2', 'Col3a', 'Col4'],
ascending=[True, False, True, False], inplace=True)
请注意,参数与您的代码中的参数不同。最后,删除辅助列:升序
data.drop(columns=['Col1a', 'Col3a'], inplace=True)