我现在可以在熊猫身上做以下事情,但我受到了来自未来警告的严厉指责:
grpd = df.groupby("rank").agg({
"mean": np.mean, "meian": np.median, "min": np.min, "max": np.max,
"25th percentile": lambda x: np.percentile(x, 25),
"75th percentile": lambda x: np.percentile(x, 75)
})
因为我有两个lambda函数,所以下面抛出一个错误:
^{pr2}$这会引发:
SpecificationError: Function names must be unique, found multiple named <lambda>
我唯一能使这项工作成功的方法(不忽略警告,我可能应该这么做)是使用下面这样一个复杂的过程
我有什么遗漏吗?当然,有更好的方法来完成我想象中相当常见的事情(使用两个不能直接从numpy导入的聚合)。在
这是另一种类似于MaxU的方法,但是它允许您创建任意数量的lambda函数。所以,如果我们想要每10个百分位可以做如下的事情
现在将
lambda_list
传递给groupby.agg()
,或附加其他函数列表,例如lambda_list + [np.mean, np.min, ...]
。在如果你只想要5个不同的百分位,那么你可以改变
n_percentile_groups = 5
。在最终,我不确定这是一个健壮的还是好的方法-使用可变数量的lambda-但是由于groupby deprecation - 0.21这似乎是我唯一知道的方法。对此非常欢迎评论。在
它是一个known bug,使用:
尝试以下小技巧:
相关问题 更多 >
编程相关推荐