You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单行if else与for循环批量更新Pandas列的RL、RM值?是否可行?

可行!这样实现单行的条件判断+循环处理

当然可以做到!你已经用列表推导式实现了单个值的保留逻辑,只需要扩展判断条件,就能同时把'RL'和'RM'都保留下来,其他值统一设为'Others'。

直接可用的单行代码

train['MSZoning'] = [x if x in ('RL', 'RM') else 'Others' for x in train['MSZoning']]

简单解释下逻辑

  • 这是一个列表推导式,本质就是把for循环和if else逻辑压缩到了一行里
  • 遍历train['MSZoning']的每一个元素x,用x in ('RL', 'RM')检查它是不是我们要保留的两个值之一
  • 如果是,就保留原数值x;不是的话就替换成'Others'

额外提个效率优化小技巧

如果你的数据集比较大,Pandas内置的方法会比列表推导式更快,比如用where方法:

train['MSZoning'] = train['MSZoning'].where(train['MSZoning'].isin(['RL', 'RM']), 'Others')

不过要是你就想坚持用for循环+if else的单行写法,最上面的列表推导式就完全够用啦。

内容的提问来源于stack exchange,提问作者Anesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:10:54