R语言如何基于共有列从不同长度dataframe中添加指定列到另一dataframe
解决方案
核心使用Pandas的merge方法即可实现字段匹配,具体操作如下:
首先导入依赖:
import pandas as pd
常用场景实现
1. 生成新的DataFrame C,保留原A表所有行
左连接可以完整保留dfA的全部数据,匹配到dfB中同region的X、Y值会自动填充,未匹配到的对应字段值为NaN:
# 仅取dfB中需要的三列参与匹配,减少不必要的性能消耗 dfC = pd.merge( left=dfA, right=dfB[["region", "X", "Y"]], on="region", how="left" )
2. 直接修改原dfA
直接将匹配结果赋值给dfA即可:
dfA = pd.merge(dfA, dfB[["region", "X", "Y"]], on="region", how="left")
其他场景参数调整
根据实际匹配需求可以修改how参数:
- 仅保留两个表region值完全匹配的行:
how="inner" - 保留两个表所有出现过的region对应行:
how="outer"
注意事项
如果dfB的region列存在重复值,匹配时会导致dfA的行数异常增加,可先对dfB按region去重后再匹配:
# 按region去重,同一个region仅保留第一条对应的X、Y值 dfB_dedup = dfB[["region", "X", "Y"]].drop_duplicates(subset="region", keep="first") dfC = pd.merge(dfA, dfB_dedup, on="region", how="left")
内容的提问来源于stack exchange,提问作者Bruna
相关产品推荐
相关产品推荐

