使用 pandas 中的参数应用多个 lambda 函数

apply multiple lambda functions with parameter in pandas

我在 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-pandas更好的方法是什么?

对我来说,嵌套的 lambda 函数如下:

q = lambda c: lambda x: x[x>=c].idxmin()
cutoff_values=[25,50,90]
print (data.apply([q((float(c)/100.0)) for c in cutoff_values]))

你可以使用这个:

df = pd.DataFrame(data={'col':[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]})
df = df[['col']].apply(lambda x: [x[x >= (float(c) / 100.0)].idxmin() for c in cutoff_values])