首页 > 解决方案 > 将过滤后的列表值传递给数据框

问题描述

我想将列表中的值放入 df 列,条件取决于另一列。我试过这个,但它抛出ValueError

terms = [0.02, 0.08, 0.24, 0.5, 1, 2]
df['col_1'] = max(list(filter(lambda x: x < df['col_2'], terms))) 

col_1必须包含最接近col_2小于它的值。因为0.35我想把0.24.

我怎样才能在没有循环的情况下实现这一点?

标签: pythonpandasdataframefilter

解决方案


这是merge_asof

df = pd.DataFrame({'col_2':[0.35]})

pd.merge_asof(df,pd.DataFrame({'col_1':terms}),
              left_on='col_2',
              right_on='col_1')

输出:

   col_2  col_1
0   0.35   0.24

推荐阅读