如何通过比较两列对数据框进行排序

时间:2019-08-13 06:32:07

标签: python-3.x pandas numpy

我只想通过比较第1组和第2组来对它们进行排序。

       Team 1       Team 2      Winner       Ground
0   Australia      England   Australia    Melbourne
1     England    Australia    England    Manchester
2   Australia      England   Australia         Lord
3     England    Australia    England    Birmingham
4 New Zealand    Australia  Australia       Dunedin
5   Australia  New Zealand  Australia  Christchurch
6       India      England    England         Leeds
7     England        India    England      The Oval

经过比较和排序后,它将像:

       Team 1      Team 2      Winner        Ground
0     England   Australia   Australia     Melbourne
1     England   Australia     England    Manchester
2     England   Australia   Australia          Lord
3     England   Australia     England    Birmingham
4 New Zealand   Australia   Australia       Dunedin
5 New Zealand   Australia   Australia  Christchurch
6       India     England     England         Leeds
7       India     England     England      The Oval

1 个答案:

答案 0 :(得分:4)

如果仅需要针对团队列按行对值进行降序排序,请使用numpy.sort

df[['Team 1','Team 2']] = np.sort(df[['Team 1','Team 2']], axis=1)[:, ::-1]
print (df)
        Team 1     Team 2     Winner        Ground
0      England  Australia  Australia     Melbourne
1      England  Australia    England    Manchester
2      England  Australia  Australia          Lord
3      England  Australia    England    Birmingham
4  New Zealand  Australia  Australia       Dunedin
5  New Zealand  Australia  Australia  Christchurch
6        India    England    England         Leeds
7        India    England    England      The Oval

详细信息

首先以升序排序:

print (np.sort(df[['Team 1','Team 2']], axis=1))
[['Australia' 'England']
 ['Australia' 'England']
 ['Australia' 'England']
 ['Australia' 'England']
 ['Australia' 'New Zealand']
 ['Australia' 'New Zealand']
 ['England' 'India']
 ['England' 'India']]

然后通过索引交换“列”:

print (np.sort(df[['Team 1','Team 2']], axis=1)[:, ::-1])
[['England' 'Australia']
 ['England' 'Australia']
 ['England' 'Australia']
 ['England' 'Australia']
 ['New Zealand' 'Australia']
 ['New Zealand' 'Australia']
 ['India' 'England']
 ['India' 'England']]