我有一个像这样的数据框:animals = pd.DataFrame({'kind': ['cat', 'dog', 'cat', 'dog'],
'height': [9.1, 6.0, 9.5, 34.0],
'weight': [7.9, 7.5, 9.9, 198.0]})
我想分组并多次应用一些聚合函数。该函数的运行次数和运行参数应为动态(输出应取决于参数列表)。
示例:
假设我想按种类分组并计算身高的平均值,身高的平均值+1,身高的平均值+2,那么我可以运行:parameters = [0,1,2]
animals.groupby(['kind']).agg(
mean_height = ('height', lambda x: x.mean() + parameters[0]),
mean_height_plus_1 = ('height', lambda x: x.mean() + parameters[1]),
mean_height_plus_2 = ('height', lambda x: x.mean() + parameters[2]))
但是,这要求我提前知道参数列表的长度。但是我想稍后改变主意并对parameters = [0,1,2,359]执行相同的操作,而不必手动将代码更改为此:animals.groupby(['kind']).agg(
mean_height = ('height', lambda x: x.mean() + parameters[0]),
mean_height_plus_1 = ('height', lambda x: x.mean() + parameters[1]),
mean_height_plus_2 = ('height', lambda x: x.mean() + parameters[2]),
mean_height_plus_359 = ('height', lambda x: x.mean() + parameters[3]))