How to sort dataframe rows by multiple columns [duplicate]
Use sort_values
, which can accept a list of sorting targets. In this case it sounds like you want to sort by S/N
, then Dis
, then Rate
:
df = df.sort_values(['S/N', 'Dis', 'Rate'])
# S/N Dis Rate
# 0 332 4.6030 91.204062
# 3 332 9.1985 76.212943
# 6 332 14.4405 77.664282
# 9 332 20.2005 76.725955
# 12 332 25.4780 31.597510
# 15 332 30.6670 74.096975
# 1 445 5.4280 60.233917
# 4 445 9.7345 31.902842
# 7 445 14.6015 36.261851
# 10 445 19.8630 40.705467
# 13 445 24.9050 4.897008
# 16 445 30.0550 35.217889
# ...
You can also achieve this by several ways, another way from the already existing answer is,
df.sort_values(by = ['S/N', "Dis", 'Rate'], inplace = True)
df
Output:
S/N Dis Rate
0 332 4.6030 91.204062
3 332 9.1985 76.212943
6 332 14.4405 77.664282
9 332 20.2005 76.725955
12 332 25.4780 31.597510
15 332 30.6670 74.096975
1 445 5.4280 60.233917
4 445 9.7345 31.902842
7 445 14.6015 36.261851
10 445 19.8630 40.705467
13 445 24.9050 4.897008
16 445 30.0550 35.217889
2 999 4.6030 91.474156
5 999 9.1985 76.212943
8 999 14.4405 77.664282
11 999 20.2005 76.725955
14 999 25.4780 31.597510
17 999 30.6670 74.096975
Here, the Inplace argument used within the sort_values function directly make the changes in the source dataframe which will eliminate the need to create another dataframe to store the sorted output.