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

pandas合并两个独立DataFrame列 保留全部值非匹配值填充缺失标识

操作错误原因

pd.concat 仅会按照两个 DataFrame 的行索引做对齐拼接,不会根据两列的实际取值做匹配。你当前使用的两个测试数据集行索引均为默认的自增整数,拼接时只会把左表第0行和右表第0行拼接、左表第1行和右表第1行拼接,自然会出现取值错位的问题,完全达不到按id值匹配的效果。

正确实现方法

你需要的效果等价于两个列的全外连接,使用pd.merge即可实现,示例代码如下:

import pandas as pd

# 你的测试数据
first = pd.DataFrame({"id1": ["K0","K4"]})
second = pd.DataFrame({"id2": ["K0", "K2", "K3"], "v": [4, 6,3]})

# 执行全外连接,按id值匹配
res = pd.merge(
    left=first,
    right=second[["id2"]], # 只取需要的id2列
    how="outer", # 全外连接,保留左右所有取值
    left_on="id1", # 左表匹配键
    right_on="id2" # 右表匹配键
)

# 可选:将空值替换为指定标识Not found
res = res.fillna("Not found")

执行上述代码后输出的结果和你要求的预期输出完全一致。

内容的提问来源于stack exchange,提问作者Manolo Dominguez Becerra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:27:01