Vardaan Shukla
Vardaan Shukla

Reputation: 896

How to sort the Dataframe by comparing two columns

I just want to sort Team 1 and Team 2 By comparing them both.

       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

After comparing and Sorting it Would be like:

       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

Upvotes: 2

Views: 504

Answers (1)

jezrael
jezrael

Reputation: 862611

If need sorting values per rows in descending order only for team columns use 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

Details:

First sorting in ascending order:

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']]

And then swap 'columns' by indexing:

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']]

Upvotes: 4

Related Questions