在pandas datafram中使用多个lambda函数

2024-10-17 16:26:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

这很好地工作,lambda函数将表中参数的名称改为类似这样的名称:“parameter_lambda”(不确定如何工作,但它可以工作)。现在的问题是,如果我想添加另一个lambda函数,如下所示(或任何其他lambda定义):

^{pr2}$

我得到这个错误:

Function names must be unique, found multiple named

这是有意义的,因为两个lambda函数在数据帧中将具有相同的名称。但我不知道该怎么办。在

我试过这样的方法:

df.groupby('dummy').agg({'returns':{'Mean': np.mean, 'Sum': np.sum}})

here所述,但我得到以下错误:

SpecificationError: cannot perform renaming for returns with a nested dictionary

有人能帮我吗?谢谢您!在


Tags: 数据lambda函数名称iddf参数定义
2条回答

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])
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和{},而不是x和{}

^{pr2}$

还有,试试这个

相关问题 更多 >