Pandas Groupby 和组内排序
按多列对 DataFrame 进行分组是数据操作中的常见任务。它允许我们按这些列聚合数据并对聚合结果执行进一步的操作。然而,通常需要对每个组内的聚合结果进行排序以获得顶行或底行。
考虑问题中提供的 DataFrame df:
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
目标是按作业和源列对 df 进行分组,然后在每个组中按降序对“计数”列进行排序。为此,我们可以使用 groupby() 和 sort_values() 函数,如下所示:
<code class="python">df.groupby(['job', 'source'])['count'].sum().sort_values(ascending=False)</code>
这将按降序对每个组中的“count”列进行排序,并提供以下输出:
job source sales E 7 C 6 B 4 D 3 A 2 market A 5 D 4 B 3 C 2 E 1
但是,如果我们只想获取每组中的前三行,我们可以使用 head() 函数:
<code class="python">df.groupby(['job', 'source'])['count'].sum().sort_values(ascending=False).groupby('job').head(3)</code>
这将给我们以下结果:
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
通过组合 groupby()、sort_values() 和 head() 函数,我们可以有效地对 pandas 中每个组中的顶部或底部行进行分组、排序和选择。
以上是如何对 DataFrame 中特定列内的数据进行分组和排序?的详细内容。更多信息请关注PHP中文网其他相关文章!