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

Pandas如何通过关联另一张DataFrame填充指定列的NaN缺失值

Pandas 跨表填充缺失值实现方案

这里提供两种常用实现方式,都可以避免维度不匹配的报错:

方案1:map+fillna 组合(更简洁,无多余列产生)

先把映射表转成ID到Val的索引结构,再直接对目标表的缺失值做匹配填充:

import pandas as pd

# 假设你的映射表名为 df_map,目标表名为 df_target
# 构建ID-Val映射关系
id_val_mapper = df_map.set_index("ID")["Val"]

# 匹配ID填充缺失值
df_target["Val"] = df_target["Val"].fillna(df_target["ID"].map(id_val_mapper))

如果你的预期输出里ID3的Val需要保留NaN,只需加一行过滤逻辑即可,比如只填充ID<=2的缺失值。

方案2:左连接实现类join关联填充

如果你需要用显式的关联操作实现,可以用左连接的方式:

# 按ID左连接两个表,给映射表的Val列加后缀避免重名
df_merged = df_target.merge(df_map, on="ID", how="left", suffixes=("", "_map"))

# 用关联得到的Val_map列填充原Val列的缺失值
df_merged["Val"] = df_merged["Val"].fillna(df_merged["Val_map"])

# 删除多余的辅助列得到最终结果
df_result = df_merged.drop(columns=["Val_map"])

报错原因说明

你之前出现维度不匹配报错,通常是因为直接把映射表的Val列整体赋值给目标表的缺失值位置,两个表行数、行顺序都不一致才会触发错误。上述两种方案都会自动按ID对齐数据,不需要手动匹配维度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:18:01