我有一个这样的数据帧:

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

如您所见,月份不是按日历顺序排列的。因此,我创建了第二列来获取每个月对应的月份号(1-12)。在此基础上,如何根据日历月份的顺序对数据帧进行排序?


当前回答

这对我很有效

df.sort_values(by='Column_name', inplace=True, ascending=False)

其他回答

使用列名对我很有用。

sorted_df = df.sort_values(by=['Column_name'], ascending=True)

你可能需要在排序后重置索引:

df = df.sort_values('2')
df = df.reset_index(drop=True)

我尝试了上面的解决方案,但没有达到效果,所以我找到了一个适合我的不同的解决方案。升序=False是将数据帧按降序排列,默认情况下为True。我使用的是python 3.6.6和pandas 0.23.4版本。

final_df = df.sort_values(by=['2'], ascending=False)

你可以在pandas文档中看到更多细节。

下面是根据pandas文档的sort_values模板。

DataFrame.sort_values(by, axis=0,
                          ascending=True,
                          inplace=False,
                          kind='quicksort',
                          na_position='last',
                          ignore_index=False, key=None)[source]

在这种情况下,它是这样的。

df.sort_values (= [' 2 '])

API参考pandas.DataFrame.sort_values

这个对我很有用:

df=df.sort_values(by=[2])

而:

df=df.sort_values(by=['2']) 

不起作用。