Pandas 使用groupby获取具有最大值的行

Pandas 使用groupby获取具有最大值的行

在本文中,我们将介绍如何使用Pandas的groupby函数,获取每个分组中具有最大值的行。

假设我们有一个数据集,其中包含按地区和年份划分的销售额。我们想了解每个地区在哪一年实现了最高的销售额,并获得那一年的销售额数据。

首先,我们需要导入Pandas包并加载数据集:

import pandas as pd

sales_data = {'region': ['North', 'North', 'South', 'South', 'East', 'East'], 
              'year': [2018, 2019, 2018, 2019, 2018, 2019], 
              'sales': [100, 200, 150, 300, 90, 180]}

df = pd.DataFrame(sales_data)
Python

我们得到了以下数据框:

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列进行分组,并找到每个分组中具有最大销售额的行:

max_sales = df.loc[df.groupby('region')['sales'].idxmax()]
Python

这里的groupby函数将数据按region列进行分组。通过将’sales’列作为参数传递给idxmax函数,我们可以找到每组中具有最大销售额的行的索引。然后我们使用loc函数来获取这些行的数据。

我们现在得到了每个地区具有最大销售额的行:

region year sales
1 North 2019 200
3 South 2019 300
5 East 2019 180

我们可以进一步简化这个过程,只保留’region’和’sales’列,并通过’sales’列进行排序:

max_sales = df[['region', 'sales']].sort_values('sales', ascending=False).drop_duplicates('region')
Python

这里,我们首先使用[[‘region’, ‘sales’]]选择需要的列。然后我们按’sales’列进行排序,并且将顺序设置为降序。我们使用drop_duplicates函数来删除具有相同’region’值的重复行,只保留每个地区的最大销售额行。

阅读更多:Pandas 教程

总结

在本文中,我们介绍了如何使用Pandas的groupby函数,获取每个分组中具有最大值的行。通过从如何导入数据到最终结果的全面演示,您应该已经掌握了如何在实践中使用groupby函数来解决类似的问题。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册