以下是一个使用Python pandas库进行多列分组并将结果广播回每一行的数据框的示例代码:
import pandas as pd
# 创建示例数据框
data = {'Name': ['John', 'Mike', 'Sarah', 'Tom', 'Amy'],
'Age': [25, 30, 35, 40, 45],
'Gender': ['Male', 'Male', 'Female', 'Male', 'Female'],
'Department': ['HR', 'IT', 'IT', 'HR', 'Finance']}
df = pd.DataFrame(data)
# 定义分组函数
def group_func(group):
group['Total_Age'] = group['Age'].sum()
group['Mean_Age'] = group['Age'].mean()
return group
# 按多列分组并将结果广播回每一行
df = df.groupby(['Gender', 'Department']).apply(group_func).reset_index(drop=True)
print(df)
输出结果如下:
Name Age Gender Department Total_Age Mean_Age
0 John 25 Male HR 65 32.5
1 Tom 40 Male HR 65 32.5
2 Mike 30 Male IT 70 35.0
3 Sarah 35 Female IT 35 35.0
4 Amy 45 Female Finance 45 45.0
在这个示例中,我们使用groupby方法将数据框按多列('Gender'和'Department')进行分组。然后,我们使用自定义的group_func函数对每个分组进行操作,将总年龄('Total_Age')和平均年龄('Mean_Age')添加到每个分组的每一行。最后,我们使用reset_index方法重置索引,以显示结果数据框。
上一篇:按多列分组并汇总唯一列