Pandas 使用groupby获取具有最大值的行
在本文中,我们将介绍如何使用Pandas的groupby函数,获取每个分组中具有最大值的行。
假设我们有一个数据集,其中包含按地区和年份划分的销售额。我们想了解每个地区在哪一年实现了最高的销售额,并获得那一年的销售额数据。
首先,我们需要导入Pandas包并加载数据集:
我们得到了以下数据框:
region | year | sales | |
---|---|---|---|
0 | North | 2018 | 100 |
1 | North | 2019 | 200 |
2 | South | 2018 | 150 |
3 | South | 2019 | 300 |
4 | East | 2018 | 90 |
5 | East | 2019 | 180 |
我们可以使用groupby函数按region列进行分组,并找到每个分组中具有最大销售额的行:
这里的groupby函数将数据按region列进行分组。通过将’sales’列作为参数传递给idxmax函数,我们可以找到每组中具有最大销售额的行的索引。然后我们使用loc函数来获取这些行的数据。
我们现在得到了每个地区具有最大销售额的行:
region | year | sales | |
---|---|---|---|
1 | North | 2019 | 200 |
3 | South | 2019 | 300 |
5 | East | 2019 | 180 |
我们可以进一步简化这个过程,只保留’region’和’sales’列,并通过’sales’列进行排序:
这里,我们首先使用[[‘region’, ‘sales’]]选择需要的列。然后我们按’sales’列进行排序,并且将顺序设置为降序。我们使用drop_duplicates函数来删除具有相同’region’值的重复行,只保留每个地区的最大销售额行。
阅读更多:Pandas 教程
总结
在本文中,我们介绍了如何使用Pandas的groupby函数,获取每个分组中具有最大值的行。通过从如何导入数据到最终结果的全面演示,您应该已经掌握了如何在实践中使用groupby函数来解决类似的问题。