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

如何用pandas的isin函数获取匹配行实际值而非布尔结果?

解决DataFrame匹配B列并提取对应C列值的问题

你现在需要的是根据B列的匹配关系,将df2的C列对应值映射到df1的新列中,而isin只能返回布尔值,没法拿到实际的C值。这里给你两个实用的解决方法:

方法1:用merge合并(推荐)

这是pandas处理这类关联匹配的标准方式,直接根据B列把两个DataFrame合并,提取需要的C列:

# 筛选df2的B、C列,以B为键左合并到df1,并重命名列
df1 = df1.merge(df2[['B', 'C']], on='B', how='left').rename(columns={'C': 'New'})
  • df2[['B', 'C']]先挑出需要的列,避免合并多余数据
  • how='left'保证df1的所有行都保留,没匹配到的行New列会填NaN
  • 最后用rename把合并过来的C列改成你要的New

方法2:用map映射

如果df2的B列没有重复值(每个B对应唯一的C),可以用map快速映射:

# 把df2转成B:C的映射关系,再匹配到df1的B列
df1['New'] = df1['B'].map(df2.set_index('B')['C'])
  • df2.set_index('B')['C']会生成一个以B为索引、C为值的Series,相当于字典
  • map会自动根据df1的B值匹配对应的C值,没匹配到的返回NaN

两种方法的区别

  • 如果df2的B列有重复值,merge会返回所有匹配结果(可能让df1行数变多),map只会取最后一个匹配的C值
  • 一对一匹配场景下两种方法都能用;一对多场景优先选merge

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:01:22