首页 > 解决方案 > 在 Pandas 数据框的多索引数据中按索引和值排序

问题描述

假设,我有一个如下的数据框:

    year    month   message
0   2018    2   txt1
1   2017    4   txt2
2   2019    5   txt3
3   2017    5   txt5
4   2017    5   txt4
5   2020    4   txt3
6   2020    6   txt3
7   2020    6   txt3
8   2020    6   txt4

我想弄清楚每年的前三条消息。因此,我将数据分组如下:

df.groupby(['year','month']).count()

结果:

            message
year    month   
2017    4   1
        5   2
2018    2   1
2019    5   1
2020    4   1
        6   3

两个索引的数据都按升序排列。但是如何找到如下所示的结果,其中数据按年份(升序)和计数(降序)排序前 n 个值。'月' 索引将是免费的。

            message
year    month   
2017    5   2
        4   1
2018    2   1
2019    5   1
2020    6   3
        4   1

标签: pythonpython-3.xpandassortingmulti-index

解决方案


这将按年份(升序)和计数(降序)排序。

df = df.groupby(['year', 'month']).count().sort_values(['year', 'message'], ascending=[True, False])

推荐阅读