【发布时间】:2019-02-10 19:12:58
【问题描述】:
我有一个 pd 数据框,其中名为“process_id”的列在多个时间步长中具有与之关联的不同参数。我想从中提取一些信息并将它们放入一个新的数据框中(因此我不必使用数据的所有细节)。下面是我的意思的一个例子,我在哪里保留,对于每个“process_id”,每个参数的最小值、最大值、平均值和标准,我还定义了一个 lambda 函数来保存最后 5 个时间步中参数的平均值:
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: 无法对带有嵌套的返回执行重命名 字典
有人可以帮助我吗?谢谢!
【问题讨论】:
-
这没有意义。请包含minimal reproducible example
-
如果它接受函数但依赖
__name__属性来区分它们,我倾向于认为这是熊猫中的一个错误。