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

如何在同一DataFrame中将一列值更新到另一列且保留原有非空值

原有代码的问题

  • 你只对Location单列执行apply操作,lambda函数只能拿到当前行的Location值,无法获取同一行对应的Pay列原值,自然没法实现保留原Pay值的逻辑
  • 你的判断逻辑完全写反了:需求是Pay列为空时才用Location值覆盖,你原来的逻辑是Location不为空就覆盖Pay,和需求完全不符

推荐实现方案

优先用pandas向量化操作实现,比apply性能高很多,写法也更简洁:

情况1:空值是空字符串''

用where方法实现,逻辑是满足条件时保留原值,不满足时用第二个参数填充:

df['Pay'] = df['Pay'].where(df['Pay'] != '', df['Location'])

情况2:空值是pandas默认的NaN

直接用fillna方法即可:

df['Pay'] = df['Pay'].fillna(df['Location'])

如果你一定要用apply实现

需要对整个DataFrame按行遍历(指定axis=1),此时lambda可以拿到整行的所有字段值:

# 逻辑:当前行Pay为空时返回Location值,否则返回原Pay值
df['Pay'] = df.apply(lambda row: row['Location'] if row['Pay'] == '' else row['Pay'], axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:57:05