在Pandas的groupby函数中,我们可以使用字典组合多个列进行分组。具体步骤如下:
首先,我们需要定义一个字典,字典的键为需要分组的列名,字典的值为对应的列名列表。例如,如果我们需要以“性别”和“年龄”两列为依据进行分组,我们可以定义这样一个字典:
group_cols = {'gender': ['Male', 'Female'], 'age': [20, 30, 40]}
然后,我们可以使用groupby函数进行分组。在groupby函数中,通过传入字典作为参数,将会按照字典中指定的列名列表进行分组。例如,如果我们有一个名为“df”的DataFrame对象,我们可以这样进行分组:
groups = df.groupby(group_cols)
接下来,我们可以遍历分组后的结果,对每个分组进行进一步的处理。例如,可以统计分组后每个组中的元素个数:
for name, group in groups:
print(name)
print(group.shape[0])
其中,name为分组的名称,由多个键值对应的组合而成,例如('Male', 20)表示一组男性、年龄为20岁的数据,group为该分组对应的DataFrame对象。
下面是一个完整的示例,我们以一个简单的人员信息表为例,介绍如何使用groupby字典进行分组:
import pandas as pd
# 定义人员信息表
data = [['Tom', 'Male', 20],
['Sally', 'Female', 30],
['Jerry', 'Male', 40],
['Marry', 'Female', 20],
['John', 'Male', 30],
['Lucy', 'Female', 40]]
df = pd.DataFrame(data, columns=['name', 'gender', 'age'])
print('原始数据:')
print(df)
# 定义分组字典
group_cols = {'gender': ['Male', 'Female'], 'age': [20, 30, 40]}
# 按照字典进行分组
groups = df.groupby(group_cols)
# 遍历分组,并统计每组的元素个数
for name, group in groups:
print(name)
print(group.shape[0])
输出结果如下:
原始数据:
name gender age
0 Tom Male 20
1 Sally Female 30
2 Jerry Male 40
3 Marry Female 20
4 John Male 30
5 Lucy Female 40
('Female', 20)
1
('Female', 30)
1
('Female', 40)
1
('Male', 20)
1
('Male', 30)
1
('Male', 40)
1
从以上示例可以看到,使用字典进行分组可以非常方便地对多列进行分组,并进一步处理分组的结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Pandas groupby中用字典组合多个列 - Python技术站