使用Pandas apply lambda处理多列报KeyError: 'A',求原因及解法
Pandas代码报错KeyError: 'A'的原因与修复
问题原因
- apply遍历方向错误:
df.apply()默认axis=0,会按列遍历处理,此时lambda里的x是单列的Series,它的索引是行号,不存在'A'这个键,直接触发KeyError。 - 判断逻辑错误:即便改成按行处理,
x['A'].isin(...)也不成立——单个数值没有isin方法,应该用in判断是否在目标列表中。
修复方案
方案一:修正apply的遍历方向与判断逻辑
指定axis=1让apply按行遍历,同时调整判断语句:
df.apply(lambda x: x['B'] if x['A'] in [1,2,3,4,5] else x['C'], axis=1)
方案二:用numpy.where实现向量运算(更高效)
apply是逐行循环处理,数据量大时效率极低。推荐使用numpy的向量运算方法,速度提升明显:
import numpy as np df['result'] = np.where(df['A'].isin([1,2,3,4,5]), df['B'], df['C'])
内容的提问来源于stack exchange,提问作者Pierre098
相关产品推荐
相关产品推荐

