pandas DataFrame多列映射字典按>=条件判断生成yes/no新列的方法
可行实现方案
pandas的ge()方法本身支持按列匹配不同阈值,只需要将阈值字典转为对应列的Series传入即可,完整代码如下:
import pandas as pd # 示例数据 dfdict = {'col1': [1,2,3], 'col2':[2,3,4], 'col3': [3.2, 4.2, 7.7]} checkdict = {'col1': 2, 'col2': 3, 'col3': 1.5} df = pd.DataFrame(dfdict) # 核心逻辑 df['test'] = df.ge(pd.Series(checkdict), axis=1)\ .any(axis=1, skipna=True)\ .map({True: 'yes', False: 'no'})
逻辑说明
- 将校验字典
checkdict转为Series后,索引和DataFrame的列名一一对应 - 调用
ge()时指定axis=1,pandas会自动按列名匹配对应阈值做「大于等于」判断,返回布尔类型的DataFrame - 调用
any(axis=1)逐行判断是否存在至少一个满足条件的值,skipna=True会自动将空值视为不满足条件,可根据需求调整参数 - 最后用
map()将布尔结果转为需要的yes/no格式
输出结果示例
col1 col2 col3 test 0 1 2 3.2 yes 1 2 3 4.2 yes 2 3 4 7.7 yes
内容的提问来源于stack exchange,提问作者nwillems1
相关产品推荐
相关产品推荐

