如何按条件合并不同DataFrame的ID列,对齐相同值缺失项补Na/None
解决方案
核心通过Pandas的外连接功能实现需求,完整可运行代码如下:
import pandas as pd # 示例数据构造 first = pd.DataFrame({"id": ["K0", "K1" ], "v": [1, 2]}) second = pd.DataFrame({"id": ["K0", "K3", "K2"], "v": [4, 6,3]}) # 合并处理 result = pd.merge( # 处理第一个表:重命名id列,仅保留id列避免其他字段干扰 first.rename(columns={"id": "id_1"})[["id_1"]], # 处理第二个表:重命名id列,仅保留id列避免其他字段干扰 second.rename(columns={"id": "id_2"})[["id_2"]], left_on="id_1", right_on="id_2", how="outer" # 外连接保留两个表所有唯一id ) # 如果需要把默认的NaN替换为None,可加下面这行 # result = result.where(result.notna(), None)
输出说明
运行后默认输出如下(你给出的示例输出省略了id为K3的行,实际会保留所有唯一id,不需要的话可自行加过滤逻辑删除):
id_1 id_2 0 K0 K0 1 K1 NaN 2 NaN K3 3 NaN K2
内容的提问来源于stack exchange,提问作者Manolo Dominguez Becerra
相关产品推荐
相关产品推荐

