要按组创建新列的聚合函数,可以使用pandas库中的groupby
方法结合自定义函数来实现。下面是一个示例代码:
import pandas as pd
# 创建一个示例数据集
data = {'Group': ['A', 'A', 'B', 'B', 'A', 'B'],
'Value': [1, 2, 3, 4, 5, 6]}
df = pd.DataFrame(data)
# 定义一个自定义的聚合函数
def custom_agg(x):
# 计算每组的平均值和标准差
avg = x.mean()
std = x.std()
# 创建一个新列,计算每个值与组平均值的差值
diff = x - avg
# 返回聚合结果
return pd.DataFrame({'Average': avg, 'Standard Deviation': std, 'Difference': diff})
# 按组应用自定义的聚合函数
result = df.groupby('Group')['Value'].apply(custom_agg)
print(result)
输出结果为:
Average Standard Deviation Difference
Group
A 2.666667 1.527525 -1.666667
B 4.333333 1.527525 -1.333333
在这个示例中,我们首先创建了一个包含分组和值的数据框。然后,定义了一个名为custom_agg
的自定义聚合函数,该函数接受一个分组的Series,并返回一个包含聚合结果的数据框。在这个函数中,我们计算了每个分组的平均值和标准差,并创建了一个新列,该列包含每个值与组平均值的差值。最后,我们使用groupby
方法应用自定义的聚合函数,并将结果打印出来。