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

Python pandas如何比对两个DataFrame的id值并合并对应color_value列

实现方案

你要的效果可以通过两种常见的pandas操作实现,以下是完整代码和说明:

方法1:使用merge左连接(最常用)

直接通过pandas的merge方法按id字段左连接两个DataFrame即可,会自动保留df1的全部行,匹配到的id自动填充对应的color_value值。

import pandas as pd

# 示例数据
df_1 = pd.DataFrame({'a': [1, 2, 3, 4, 5], 'id': ['001', '002', '001', '004', '003']})
df_2 = pd.DataFrame({'id': ['001', '002', '003', '004'], 'color_value': ['blue', 'red', 'yellow', 'orange']})

# 核心操作:左连接匹配
df_1 = df_1.merge(df_2, on='id', how='left')

# 输出结果
print(df_1)

运行输出结果和你需要的最终效果完全一致。

方法2:使用map映射(大数据量下效率更高)

如果df2的id是唯一值(作为查找表通常满足这个条件),可以先把df2转为id到color_value的映射字典,再给df1映射赋值,性能比merge更好。

import pandas as pd

# 示例数据
df_1 = pd.DataFrame({'a': [1, 2, 3, 4, 5], 'id': ['001', '002', '001', '004', '003']})
df_2 = pd.DataFrame({'id': ['001', '002', '003', '004'], 'color_value': ['blue', 'red', 'yellow', 'orange']})

# 核心操作:生成映射字典后赋值
id_color_map = df_2.set_index('id')['color_value'].to_dict()
df_1['color_value'] = df_1['id'].map(id_color_map)

# 输出结果
print(df_1)

补充说明:如果存在df1的id在df2中没有匹配项的情况,两种方法生成的color_value字段对应位置会自动填充为NaN,符合查找逻辑的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:24:01