将多个 lambda 函数与 Pandas 数据框结合使用

Bil*_*Ket 3 python lambda pandas

我有一个 pd 数据框,其中名为“process_id”的列对于多个时间步骤具有与其关联的不同参数。我想从中提取一些信息并将它们放入一个新的数据框中(这样我就不必使用数据的所有细节)。下面是我的意思的一个例子,我为每个“process_id”保留每个参数的最小值、最大值、平均值和标准差,我还定义了一个 lambda 函数来保存最后 5 个时间步中参数的平均值:

features = df.groupby('process_id').agg(['min', 'max', 'mean', 'std', lambda x: x.tail(5).mean()])
Run Code Online (Sandbox Code Playgroud)

这工作正常,并且 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()])
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

函数名必须唯一,发现多个命名

这是有道理的,因为两个 lambda 函数在数据框中都具有相同的名称。但我不知道如何解决这个问题。

我试过这样的事情:

df.groupby('dummy').agg({'returns':{'Mean': np.mean, 'Sum': np.sum}})
Run Code Online (Sandbox Code Playgroud)

描述在这里,但我得到这个错误:

规范错误:无法使用嵌套字典为返回执行重命名

有人能帮我吗?谢谢!

WeN*_*Ben 5

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])
Run Code Online (Sandbox Code Playgroud)