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

如何基于另一个DataFrame的ID匹配新增type列

这问题我平时处理数据时经常碰到,用pandas的两种方法都能轻松解决,给你详细说说:

方案1:用merge方法(直观易理解)

merge是pandas专门用来做数据关联的工具,特别适合这种按ID匹配列的场景:

# 先从df1里提取我们需要的ID和type列,避免合并后引入多余的列
df1_type_map = df1[['ID', 'type']]
# 按ID做左合并,确保df2的所有行都被保留
df2 = df2.merge(df1_type_map, on='ID', how='left')

为什么这么做?

  • how='left'参数保证df2里的每一行都不会丢失(哪怕某个ID在df1里不存在,不过你说两个DF的ID是完全对应的,用inner也可以,但left更稳妥)
  • 合并完成后,df2就会自动新增type列,并且每个ID对应的type值都匹配好了

方案2:用map方法(更简洁高效)

如果只需要映射type这一列,用map会更简洁,而且数据量大的时候速度更快:

# 把df1转换成「ID: type」的字典格式
id_type_dict = df1.set_index('ID')['type'].to_dict()
# 直接给df2新增type列,通过ID映射对应的值
df2['type'] = df2['ID'].map(id_type_dict)

补充说明

你之前尝试的isin思路其实只完成了「判断ID是否存在」的步骤,没办法直接拿到对应的type值。而上面两种方法都是直接做值的映射匹配,刚好能解决你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:22:15