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

如何在主DataFrame中添加子集DataFrame的匹配值列

匹配主DataFrame与子集DataFrame并新增匹配列

需求:现有结构不匹配的两个DataFrame,其中一个是另一个的子集(分别称为主DataFramedfa、子集DataFramedfs),需以两表的Col2列为匹配键,在dfa中新增一列——匹配到的填入对应Col2值,未匹配到的显示NaN。

示例数据

主DataFrame(dfa)

Col1  Col2
1     0,01
2     0.002
3     0.02
4     0.003
5     0.004
6     0.005
7     0.008

子集DataFrame(dfs)

Col1  Col2  
1     0,01  
2     0.002
3     0.02
4     0.004

预期输出

Col1  Col2    Col2
1     0,01    0,01 
2     0.002   0.002
3     0.02    0.02
4     0.003   NaN
5     0.004   0.004
6     0.005   NaN
7     0.008   NaN

实现方式

方式1:用merge左连接

以Col2为键做左连接,自动保留dfa所有行,未匹配项填充NaN:

import pandas as pd

# 假设dfa、dfs已初始化
result = dfa.merge(dfs[['Col2']], on='Col2', how='left', suffixes=('', '_match'))
# 若要让新增列名与示例一致(同为Col2),可重命名列
result = result.rename(columns={'Col2_match': 'Col2'})
print(result)

方式2:用isin结合where

直接判断dfa的Col2值是否存在于dfs的Col2中,匹配失败则赋值NaN:

import pandas as pd

# 新增列并赋值,匹配成功保留原值,失败填NaN
dfa['Col2_new'] = dfa['Col2'].where(dfa['Col2'].isin(dfs['Col2']), pd.NA)
# 若需和示例列名一致,执行重命名
dfa = dfa.rename(columns={'Col2_new': 'Col2'})

注:示例中新增列与原列同名,实际建议使用不同名称(如Col2_match)避免混淆,若业务要求必须同名,可按上述代码处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:41:01