考虑这样一种情况,您有一个包含多列的 DataFrame,并且您希望按两列对行进行分组。分组后,您可能需要对每个组内的聚合结果进行进一步排序,例如按计数列降序排序。以下是实现这一目标的方法:
要按多列对数据进行分组,然后在组内进行排序,可以组合使用 groupby() 和 sort_values() 函数。例如,假设您有一个包含列计数、作业和源的 DataFrame。
<code class="python">import pandas as pd df = pd.DataFrame({'count': [2, 4, 6, 3, 7, 5, 3, 2, 4, 1], 'job': ['sales','sales','sales','sales','sales', 'market','market','market','market','market'], 'source': ['A','B','C','D','E','A','B','C','D','E']})</code>
要获取每个作业和源组合的总数,您可以执行以下操作:
<code class="python">df.groupby(['job','source']).agg({'count':sum})</code>
接下来,要在每个组中按降序对计数列进行排序并仅取前三行,您可以执行以下操作:
<code class="python">result = df.sort_values(['job','count'],ascending=False).groupby('job').head(3)</code>
这将返回一个包含前三行的 DataFrame每个作业组,按计数列降序排序。生成的 DataFrame 可能如下所示:
<code class="python">print(result) 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</code>
以上是如何使用 Pandas GroupBy 对数据进行分组并在组内排序?的详细内容。更多信息请关注PHP中文网其他相关文章!