要按多列进行分组和聚合,可以使用groupby
函数和agg
函数来实现。
首先,我们需要导入pandas
库。
import pandas as pd
接下来,我们创建一个包含多个列的数据集。
data = {
'Name': ['Tom', 'Nick', 'John', 'Tom', 'Nick', 'John'],
'Age': [20, 25, 30, 20, 25, 30],
'Gender': ['Male', 'Male', 'Male', 'Female', 'Female', 'Female'],
'Salary': [5000, 6000, 7000, 5500, 6500, 7500]
}
df = pd.DataFrame(data)
我们的数据集如下所示:
Name Age Gender Salary
0 Tom 20 Male 5000
1 Nick 25 Male 6000
2 John 30 Male 7000
3 Tom 20 Female 5500
4 Nick 25 Female 6500
5 John 30 Female 7500
现在,我们可以使用groupby
函数按多列进行分组,然后使用agg
函数进行聚合操作。在agg
函数中,我们可以指定要应用的聚合函数,例如sum
、mean
、count
等。
grouped_data = df.groupby(['Name', 'Age', 'Gender']).agg({'Salary': 'sum'})
上述代码将按照Name
、Age
和Gender
这三列进行分组,并对Salary
列进行求和操作。结果如下所示:
Salary
Name Age Gender
John 30 Female 7500
Nick 25 Female 6500
25 Male 6000
Tom 20 Female 5500
20 Male 5000
如果要对多列应用多个聚合函数,可以在agg
函数中使用一个字典来指定每个列和相应的聚合函数。
grouped_data = df.groupby(['Name', 'Age', 'Gender']).agg({'Salary': ['sum', 'mean'], 'Age': 'count'})
上述代码将对Salary
列应用sum
和mean
聚合函数,并对Age
列应用count
聚合函数。结果如下所示:
Salary Age
sum mean count
Name Age Gender
John 30 Female 7500 7500 1
Nick 25 Female 6500 6500 1
25 Male 6000 6000 1
Tom 20 Female 5500 5500 1
20 Male 5000 5000 1
以上就是按多列进行分组和聚合的解决方法,通过使用groupby
函数和agg
函数,可以方便地对多列数据进行分组和聚合操作。