如何在Pandas中基于条件对多列进行向量化处理?
解决Pandas多列条件赋值问题
- 你的问题出在列选择的语法上,
'A' & 'B'这种写法是错误的,因为&是布尔运算符,不能直接用来拼接列名。要选择多列,你需要把列名放在列表里。
正确的向量化写法
直接把目标列名组成列表传给loc的列索引部分即可,这是Pandas原生支持的向量化操作,效率很高:
target_columns = ['A', 'B', 'C', 'D', 'E'] df.loc[df['Pos'] == "Between 10,001 and 26,000", target_columns] = "N/A"
简化写法(直接写列表)
如果不想单独定义变量,也可以直接在loc里写列名列表:
df.loc[df['Pos'] == "Between 10,001 and 26,000", ['A', 'B', 'C', 'D', 'E']] = "N/A"
补充说明
这种方式本质上还是向量化操作,Pandas会一次性对符合条件的行和指定列完成赋值,避免了循环遍历的低效问题,和你单列操作的底层逻辑一致,只是把单列名换成了列名列表。
内容的提问来源于stack exchange,提问作者mirror1023
相关产品推荐
相关产品推荐

