使用np.where校验pandas列是否存在并赋值时触发KeyError问题求解
错误原因
np.where 属于numpy向量化函数,执行时会先计算所有入参的结果,再按条件筛选返回值。也就是说哪怕 'col1' in df.columns 判断结果为False,df['col1'] 这段取值逻辑依然会先执行,当col1不存在时直接触发KeyError。
可用解决方案
- 方案1:使用Python原生if-else判断(惰性计算,条件不满足时不会执行报错的取值逻辑)
if 'col1' in df.columns: df['col_result'] = df['col1'] else: df['col_result'] = 'None'
- 方案2:使用pandas内置的get方法,不存在时直接返回默认值
df['col_result'] = df.get('col1', 'None')
- 方案3:使用reindex方法统一对齐列,不存在的列自动填充指定值
df['col_result'] = df.reindex(columns=['col1'], fill_value='None')['col1']
内容的提问来源于stack exchange,提问作者TonyTony2000
相关产品推荐
相关产品推荐

