FunnyChef
FunnyChef

Reputation: 1946

How to reorder values across columns in a pandas DataFrame?

How can I reorder the values, in each column for each row in ascending order?

My DataFrame:

data = pd.DataFrame({'date':  ['1/1/2021','1/1/2021','1/2/2021'],
                      'col1': [7,2,6],
                      'col2': [2,4,8],
                      'col3': [1,2,7]
                     })
print(data)

       date  col1  col2  col3
0  1/1/2021     7     2     1
1  1/1/2021     2     4     2
2  1/2/2021     6     8     7


However, I need to reorder the values in each row to be in ascending order, across the columns. So, the end result needs to look like;

       date  col1  col2  col3
0  1/1/2021     1     2     7
1  1/1/2021     2     2     4
2  1/2/2021     6     7     8

Upvotes: 2

Views: 90

Answers (2)

Shubham Sharma
Shubham Sharma

Reputation: 71689

You can use np.sort along axis=1 to sort the columns col1, col2 and col3 of the dataframe in the ascending order:

cols = ['col1', 'col2', 'col3']
data.loc[:, cols] = np.sort(data[cols], axis=1)

>>> data

       date  col1  col2  col3
0  1/1/2021     1     2     7
1  1/1/2021     2     2     4
2  1/2/2021     6     7     8

Upvotes: 2

anky
anky

Reputation: 75080

you can np.sort and then df.join

data[['date']].join(pd.DataFrame(np.sort(data.drop('date',1),axis=1)).add_prefix('col'))

       date  col0  col1  col2
0  1/1/2021     1     2     7
1  1/1/2021     2     2     4
2  1/2/2021     6     7     8

Upvotes: 1

Related Questions