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

如何用另一列值替换DataFrame某列中的空值/NaN?

问题原因

df['Date'].replace(np.nan, df['Date2']) 无法生效的核心问题在于:replace 方法的参数逻辑是值映射替换——当你传入df['Date2']作为替换值时,它只会取这个Series的第一个元素,把所有NaN都替换成同一个值,而不是按行对应填充缺失的位置。

解决方法

以下是三种可靠的逐行替换缺失值的方式:

  • 方法一:使用fillna(推荐,最直观)
    fillna 原生支持传入Series,按行匹配填充缺失值:
import pandas as pd
import numpy as np

df['Date'] = df['Date'].fillna(df['Date2'])
  • 方法二:使用combine_first
    该方法会用右侧列的值填充左侧列的缺失值,同时保留左侧列的非缺失数据:
df['Date'] = df['Date'].combine_first(df['Date2'])
  • 方法三:使用where条件判断
    通过布尔索引控制,仅当Date列存在缺失时,用Date2对应行的值替换:
df['Date'] = df['Date'].where(df['Date'].notna(), df['Date2'])
测试示例

构造测试数据验证效果:

# 创建测试DataFrame
df = pd.DataFrame({
    'Date': ['2023-01-01', np.nan, '2023-01-03', np.nan],
    'Date2': ['2023-02-01', '2023-02-02', '2023-02-03', '2023-02-04']
})

# 应用fillna替换
df['Date'] = df['Date'].fillna(df['Date2'])
print(df)

输出结果:

Date       Date2
0  2023-01-01  2023-02-01
1  2023-02-02  2023-02-02
2  2023-01-03  2023-02-03
3  2023-02-04  2023-02-04

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:50:22