首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从一列对pandas数据帧进行排序

如何从一列对pandas数据帧进行排序
EN

Stack Overflow用户
提问于 2016-06-13 18:44:09
回答 9查看 633.8K关注 0票数 417

我有一个这样的数据框架:

代码语言:javascript
复制
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)对应的月份编号。从那里,我如何根据日历月份的顺序对此数据框进行排序?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2016-06-13 18:45:16

使用sort_values按特定列的值对df进行排序:

代码语言:javascript
复制
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']中的每个值都是唯一的。

票数 538
EN

Stack Overflow用户

发布于 2020-08-27 17:57:39

使用列名对我很有效。

代码语言:javascript
复制
sorted_df = df.sort_values(by=['Column_name'], ascending=True)
票数 26
EN

Stack Overflow用户

发布于 2021-02-05 22:10:55

熊猫的sort_values完成了这项工作。

如果要保持变量名不变,请不要忘记inplace=True (这将执行就地操作)

代码语言:javascript
复制
df.sort_values(by=['2'], inplace=True)

最好将更改(排序)赋值给一个可能具有相同名称的变量,例如df

代码语言:javascript
复制
df = df.sort_values(by=['2'])

忘记上面提到的步骤可能会导致一个人(作为this user)无法获得预期的结果。

请注意,如果希望按降序排列,则需要传递ascending=False,例如

代码语言:javascript
复制
df = df.sort_values(by=['2'], ascending=False)
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37787698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档