📜  Pandas groupby max multiple columns in pandas - Python (1)

📅  最后修改于: 2023-12-03 15:03:28.305000             🧑  作者: Mango

Pandas groupby max multiple columns in pandas - Python

在使用pandas进行数据分组时,我们可以使用groupby()函数。然后,我们可以对每个组的数据执行一些聚合操作,例如max()min()sum()等。在本文中,我们将讨论如何针对多个列在Python中使用groupby()函数的max()方法。

准备数据

在本例中,我们将使用pandas的read_csv()方法从CSV文件中读取数据。我们将使用以下数据集:

| Name | Country | Age | Gender | Score | | ---- | ------- | --- | ------ | ----- | | Amy | USA | 25 | F | 87 | | Bob | Canada | 30 | M | 91 | | Cathy | USA | 28 | F | 90 | | David | Canada | 32 | M | 89 | | Emma | USA | 26 | F | 92 |

让我们看一下如何从CSV文件中读取这个数据集:

import pandas as pd

df = pd.read_csv('data.csv')
print(df)

输出:

    Name Country  Age Gender  Score
0    Amy     USA   25      F     87
1    Bob  Canada   30      M     91
2  Cathy     USA   28      F     90
3  David  Canada   32      M     89
4   Emma     USA   26      F     92

现在我们有了准备好的数据,我们可以开始使用groupby()max()方法。

Pandas groupby max multiple columns

为了在多列上使用groupby()max()方法,我们需要将列名称作为参数传递给groupby()方法,并将列名称作为字典传递给agg()方法,如下所示:

df.groupby('Country')[['Score', 'Age']].max()

输出:

         Score  Age
Country           
Canada      91   32
USA         92   28

这里,我们按照Country列分组,并返回分组中ScoreAge列的最大值。请注意,我们使用双括号[[]]来选择多个列,并将它们放置在一个列表中。

Pandas groupby max multiple columns with custom column names

如果我们想对每个分组使用自定义列名,我们可以将自定义列名作为字典键,并将每个键与相应的聚合函数列表进行配对,如下所示:

df.groupby('Country').agg(
    max_Score=('Score', 'max'),
    max_Age=('Age', 'max')
)

输出:

         max_Score  max_Age
Country                    
Canada          91       32
USA             92       28

这里,我们对Country列进行分组,并计算每个分组中ScoreAge列的最大值。最后,我们将结果存储在具有自定义列名的新列中。

Pandas groupby max multiple columns with reset index

如果我们想将groupby()方法返回的结果放入DataFrame中,并将Country列转换为普通的列,则可以使用reset_index()方法:

df.groupby('Country')[['Score', 'Age']].max().reset_index()

输出:

  Country  Score  Age
0  Canada     91   32
1     USA     92   28

这里,我们将Country列用作分组依据,返回ScoreAge列的最大值,并使用reset_index()方法将Country列转换为普通的列。