如何用lambda函数筛选属于多个指定浮点区间的DataFrame列值
实现方案
该功能完全可以通过lambda函数实现,无论是筛选符合区间条件的数值,还是基于区间生成分箱新列都支持。
场景1:筛选满足任意开区间条件的行
先定义你的区间列表:
import pandas as pd bins = [(41.2, 44.1), (34.1, 38.2), (31.2, 32.4), (29.4, 31.2), (26.5, 28.6), (21.1, 23.5)]
直接通过apply调用lambda完成筛选,lambda内用any()判断是否命中任意区间:
# 代码中的「待匹配列」替换为你实际要处理的列名 filtered_df = df[df['待匹配列'].apply(lambda x: any(left < x < right for left, right in bins))]
场景2:基于区间生成分箱新列
如果需要给每个数值标记所属的区间,未命中的标记为无匹配,可以用以下写法:
df['分箱结果'] = df['待匹配列'].apply( lambda x: next((f"{left}-{right}" for left, right in bins if left < x < right), "无匹配") )
补充说明
如果你的DataFrame数据量超过10万行,更推荐用pandas原生的pd.cut()方法实现,执行效率会比逐行apply lambda高很多,但如果是中小数据集、或追求写法简洁,lambda方案完全够用。
内容的提问来源于stack exchange,提问作者artemivchatov
相关产品推荐
相关产品推荐

