【发布时间】:2022-01-27 01:08:01
【问题描述】:
我在 pandas DataFrame 中找到高于某些截止值的某些值的索引。到目前为止,我已经使用一系列 lambda 函数实现了这一点。
data.apply([lambda v:v[v>=0.25].idxmin(),
lambda v:v[v>=0.25].idxmin(),
lambda v:v[v>=0.50].idxmin(),
lambda v:v[v>=0.75].idxmin(),
lambda v:v[v>=0.90].idxmin()])
我试图将 lambda 函数参数化为任意截止值列表。但是,如果我使用以下内容,则结果不正确,因为所有 lambda 函数都具有相同的名称,并且基本上只有最后一个存在于 apply 返回的数据框中。 如何正确参数化这些 lambda?
cutoff_values=[25,50,100]
agg_list=[lambda v,c:v[v>=(float(c)/100.0)].idxmin() for c in cutoff_values]
data.apply(agg_list)
pythonic-pandasque 更好的方法是什么?
【问题讨论】:
-
您使用多个 lambda 而不是函数是否有特定原因?也许你能详细说明
my cutoff list is changing? -
命名函数会有什么不同吗?
-
关于我的截止列表正在改变:我需要设置我的截止参数
-
有了一个函数,只需传递一组截止值而不是复制和粘贴 lambda 函数会容易得多。并且使用命名函数,您不会遇到只执行最后一个函数的问题。在那里,您可以在一个功能中完成所有操作。或者像 @jezrael 在答案中使用嵌套的 lambdas