Edoardo
Edoardo

Reputation: 675

Method to sort DataFrame's values

I don't understand this code:

d = {'col1': [5, 6,4, 1, 2, 9, 15, 11]}


df = pd.DataFrame(data=d)
df.head(10)

df['col1'] = df.sort_values('col1')['col1']

print(df.sort_values('col1')['col1'])

This is what is printed:

3     1
4     2
2     4
0     5
1     6
5     9
7    11
6    15

My df doesn't change at all. Why does this code: df.sort_values('col1')['col1'] do not arrange my dataframe? Thanks

Upvotes: 1

Views: 28

Answers (1)

jezrael
jezrael

Reputation: 863166

If want assign back sorted column is necessary convert output to numpy array for prevent index alignment - it means if use only df.sort_values('col1')['col1'] it sorting correctly, index order is changed, but in assign step is change order like original, so no change in order of values.

df['col1'] = df.sort_values('col1')['col1'].to_numpy()

If default index another idea is create default index (same like original), so alignment asign by new index values:

df['col1'] = df.sort_values('col1')['col1'].reset_index(drop=True)

If want sort by col1 column:

df = df.sort_values('col1')

Upvotes: 3

Related Questions