как сортировать pandas dataframe из одного столбца
У меня есть фрейм данных, как это
print(df)
0 1 2
0 354.7 April 4.0
1 55.4 August 8.0
2 176.5 December 12.0
3 95.5 February 2.0
4 85.6 January 1.0
5 152 July 7.0
6 238.7 June 6.0
7 104.8 March 3.0
8 283.5 May 5.0
9 278.8 November 11.0
10 249.6 October 10.0
11 212.7 September 9.0
Как вы можете видеть месяцев не в календарном порядке. поэтому я создал второй столбец и получил номер месяца, относящийся к этому месяцу. из этого, как я могу отсортировать этот фрейм данных в соответствии с порядком календарных месяцев.
2 ответа:
использовать
sort_values
для сортировки df по значениям определенного столбца:In [18]: df.sort_values('2') Out[18]: 0 1 2 4 85.6 January 1.0 3 95.5 February 2.0 7 104.8 March 3.0 0 354.7 April 4.0 8 283.5 May 5.0 6 238.7 June 6.0 5 152.0 July 7.0 1 55.4 August 8.0 11 212.7 September 9.0 10 249.6 October 10.0 9 278.8 November 11.0 2 176.5 December 12.0
если вы хотите сортировать по двум столбцам, передайте список меток столбцов в
sort_values
с метками столбцов, упорядоченными в соответствии с приоритетом сортировки. Если вы используетеdf.sort_values(['2', '0'])
результат будет отсортирован по столбцу2
столбец0
. Согласен, это действительно не имеет смысла для этого примера, потому что каждое значениеdf['2']
уникален.
просто добавив еще несколько операций над данными. Предположим, у нас есть фрейм данных
df
, мы можем сделать несколько операций, чтобы получить желаемые результатыID cost tax label 1 216590 1600 test 2 523213 1800 test 3 250 1500 experiment df['label'].value_counts().to_frame().reset_index()).sort_values('label', ascending=False)
даст
sorted
вывод меток в видеdataframe
index label 0 test 2 1 experiment 1