如何基于多列对熊猫数据框进行排序/排名

问题描述 投票:0回答:1

我有一个熊猫表,例如:

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中排名第一,在其他方面排名第二。

谢谢。

python pandas sorting multiple-columns rank
1个回答
0
投票
从创建2个辅助列开始,

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)

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.