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

Pandas:用M1或M2列的非NaN值填充B列缺失值

解决B列NaN值填充问题:用M1/M2的非空值替换

直接上能解决问题的代码,完全符合你的需求——只替换B列的NaN,不改动已有的正确值,同时兼顾M1和M2的非空情况:

df.loc[df['B'].isnull(), 'B'] = df['M1'].combine_first(df['M2'])

为什么这个方法管用?

combine_first()是Pandas里专门处理这类“优先取A,A空就取B”场景的神器:

  • 它会逐行检查M1的值,如果M1不是NaN,就用M1的值填充B的NaN;
  • 如果M1是NaN(比如你示例里的第五行),就自动取对应行M2的非NaN值;
  • 完全不会触碰B列已经计算正确的那些行(比如第一、三、四、六行的B值会原封不动保留)。

验证你的示例数据

运行完上面的代码后,你的DataFrame会变成:

AM1M2B
1123
12NaN2
1369
14812
1NaN1010
161218

完美匹配你想要的结果!

额外小技巧

如果你需要优先用M2的值(而不是M1),只需要调换两个列的顺序就行:

df.loc[df['B'].isnull(), 'B'] = df['M2'].combine_first(df['M1'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:17:49