在 pandas 中进行分组排序
使用 pandas 数据框时,通常需要按特定列对数据进行分组,然后执行其他操作在这些群体中。一个常见的要求是根据特定标准对分组数据进行排序。
要实现此目的,可以将 groupby 函数与 sort_values 函数链接起来。例如,考虑一个包含 count、job 和 source 列的数据框 df。
In [167]: df Out[167]: count job source 0 2 sales A 1 4 sales B 2 6 sales C 3 3 sales D 4 7 sales E 5 5 market A 6 3 market B 7 2 market C 8 4 market D 9 1 market E
如果您想按 job 和 source 对数据进行分组,然后按 count 降序对聚合结果进行排序,您可以执行以下操作:
In [168]: df.groupby(['job','source']).agg({'count':sum})
这将创建一个新的数据框,其中包含每个组的聚合计数值。但是,生成的数据帧不会按计数排序。要对数据帧进行排序,您可以使用 sort_values 函数:
In [34]: df.sort_values(['job','count'],ascending=False)
这将首先按作业对数据帧进行排序,然后按计数降序排列。生成的数据框将如下所示:
Out[35]: count job source 4 7 sales E 2 6 sales C 1 4 sales B 5 5 market A 8 4 market D 6 3 market B
要获取每组的前三行,您可以使用 head 函数:
In [34]: df.sort_values(['job','count'],ascending=False).groupby('job').head(3)
这将生成一个新的数据框包含每组的前三行,按计数降序排列。
Out[35]: count job source 4 7 sales E 2 6 sales C 1 4 sales B 5 5 market A 8 4 market D 6 3 market B
以上是如何在 Pandas DataFrame 中对组内的数据进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!