如何从一列中对熊猫数据框进行排序

新手上路,请多包涵

我有一个这样的数据框:

 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)对应的月份数。从那里,我如何根据日历月的顺序对这个数据框进行排序?

原文由 Sachila Ranawaka 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 442
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']) ,则结果将按 --- 列排序,然后按 20 。诚然,这对于这个例子来说并没有什么意义,因为 df['2'] 中的每个值都是唯一的。

原文由 EdChum 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

您可以在 此处 查看 pandas 文档中的更多详细信息。

原文由 Joel Carneiro 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题