我有一个pd数据帧,其中的“ process_id”列在多个时间步中具有与之关联的不同参数。我想从中提取一些信息并将它们放入一个新的数据框中(因此,我不必使用数据的所有详细信息)。下面是我的意思的示例,在此我为每个“ process_id”保留每个参数的最小值,最大值,平均值和标准差,并且我还定义了一个lambda函数来保存最近5个时间步长中参数的平均值:< / p>
features = df.groupby('process_id').agg(['min', 'max', 'mean', 'std', lambda x: x.tail(5).mean()])
这很好用,并且lambda函数将表中参数的名称更改为以下形式:“ parameter_lambda”(不确定如何,但它可以工作)。现在的问题是,如果我想添加另一个lambda函数,则类似以下内容(或任何其他lambda定义):
features = df.groupby('process_id').agg(['min', 'max', 'mean', 'std', lambda x: x.tail(5).mean(),lambda x: x.iloc[0:int(len(df)/5)].mean()])
我收到此错误:
函数名称必须唯一,可以找到多个名称
这很有意义,因为两个lambda函数在数据帧中都具有相同的名称。但是我不知道该如何解决。
我尝试过这样的事情:
df.groupby('dummy').agg({'returns':{'Mean': np.mean, 'Sum': np.sum}})
如here所述,但出现此错误:
SpecificationError:无法为带有嵌套的退货执行重命名 字典
有人可以帮助我吗?谢谢!
答案 0 :(得分:4)
lambda
函数将存在由lambda
fuc1=lambda x: x.tail(5).mean()
fuc1.__name__ = 'tail_mean'
fuc2=lambda x: x.iloc[0:int(len(df)/5)].mean()
fuc2.__name__ = 'len_mean'
features = df.groupby('process_id').agg(['min', 'max', 'mean', 'std', fuc1,fuc2])
答案 1 :(得分:0)
features = df.groupby('process_id').agg(['min', 'max', 'mean', 'std', lambda x: x.tail(5).mean(),lambda y: y.iloc[0:int(len(df)/5)].mean()])
尝试使用x
和y
而不是x
和x
df.groupby('dummy').agg({'returns': [np.mean, np.sum]})
还可以尝试