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

如何以Pythonic方式在Pandas中从关联DataFrame添加匹配列?

解决Pandas DataFrame匹配添加列的问题

嘿,作为Pandas新手碰到这种跨表匹配加列的问题太正常啦!刚好你的场景是两列完全匹配,有两种非常Pythonic的方法可以搞定,我给你详细说说:

方法1:用merge()(通用且稳妥)

merge()是Pandas处理表连接的核心方法,适合各种匹配场景,哪怕以后遇到不完全匹配也能用。因为你要把df1的K列加到df2里,我们用左连接就能保证df2的所有行都保留,同时匹配上对应的K值:

import pandas as pd

# 执行合并,指定左右表的匹配列,用左连接
merged_df = df2.merge(df1, left_on='B', right_on='Name', how='left')

# 如果不想保留重复的Name列,可以删掉它
merged_df = merged_df.drop('Name', axis=1)

参数说明:

  • left_on='B':左表(df2)用来匹配的列
  • right_on='Name':右表(df1)用来匹配的列
  • how='left':保留左表(df2)的所有行,即使右表没有对应匹配(不过你说完全匹配,用how='inner'也可以,但left更稳妥)

如果你想更高效,合并时可以只取df1里需要的列,避免引入多余数据:

merged_df = df2.merge(df1[['Name', 'K']], left_on='B', right_on='Name', how='left').drop('Name', axis=1)

方法2:用map()(简洁高效,适合完全匹配场景)

因为你的B列和Name列是完全匹配的,用map()会更简洁,本质是先把df1转换成一个「Name→K」的映射字典,再给df2批量赋值:

# 把df1转换成以Name为索引、K为值的Series(相当于映射表)
k_mapping = df1.set_index('Name')['K']

# 给df2直接添加K列,通过B列匹配映射
df2['K'] = df2['B'].map(k_mapping)

这种方法代码更短,执行速度也更快,尤其适合这种一对一完全匹配的场景,不会产生额外的列,一步到位。

两种方法都很Pythonic,你可以根据自己的习惯选~如果以后遇到多列匹配、不完全匹配的情况,优先用merge()就对了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:21:43