我有一个这样的数据框架:
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)对应的月份编号。从那里,我如何根据日历月份的顺序对此数据框进行排序?
发布于 2016-06-13 18:45:16
使用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']
中的每个值都是唯一的。
发布于 2020-08-27 17:57:39
使用列名对我很有效。
sorted_df = df.sort_values(by=['Column_name'], ascending=True)
发布于 2021-02-05 22:10:55
熊猫的sort_values
完成了这项工作。
如果要保持变量名不变,请不要忘记inplace=True
(这将执行就地操作)
df.sort_values(by=['2'], inplace=True)
最好将更改(排序)赋值给一个可能具有相同名称的变量,例如df
df = df.sort_values(by=['2'])
忘记上面提到的步骤可能会导致一个人(作为this user)无法获得预期的结果。
请注意,如果希望按降序排列,则需要传递ascending=False
,例如
df = df.sort_values(by=['2'], ascending=False)
https://stackoverflow.com/questions/37787698
复制相似问题