要按分组对每一行应用函数并创建新列,可以使用groupby()
函数和apply()
函数来实现。
下面是一个示例代码,假设有一个数据集df,包含了学生的姓名、班级和成绩。我们想要按班级分组,并计算每个班级的平均成绩,然后创建一个新列"平均成绩"来存储计算结果。
import pandas as pd
# 创建示例数据集
data = {'姓名': ['张三', '李四', '王五', '赵六', '刘七'],
'班级': ['A', 'B', 'A', 'B', 'A'],
'成绩': [80, 75, 90, 85, 95]}
df = pd.DataFrame(data)
# 按班级分组,并应用函数计算平均成绩
df['平均成绩'] = df.groupby('班级')['成绩'].apply(lambda x: x.mean())
print(df)
输出结果如下:
姓名 班级 成绩 平均成绩
0 张三 A 80 88.333333
1 李四 B 75 80.000000
2 王五 A 90 88.333333
3 赵六 B 85 80.000000
4 刘七 A 95 88.333333
在上面的代码中,我们首先导入pandas库。然后,创建了一个包含学生姓名、班级和成绩的字典data,并使用该字典创建了一个数据框df。
接下来,我们使用groupby()
函数按班级分组,并使用apply()
函数来应用lambda函数来计算每个班级的平均成绩。lambda x: x.mean()
是一个匿名函数,用于计算每个分组的平均值。
最后,我们通过将计算结果赋值给新列"平均成绩"来创建一个新列。
通过运行以上代码,我们可以得到按分组计算的每个班级的平均成绩,并将结果存储在新列中。