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

如何基于匹配列合并两个DataFrame并补充缺失的PRICE列数据

基于多列匹配为DataFrame填充价格列

要实现将df中的PRICE列匹配到df2(仅当TITLE和CODE同时匹配时填充,无匹配项填NaN),可以用pandas的merge()函数完成,步骤如下:

核心思路

通过**左连接(left join)**基于TITLE和CODE两列关联两个DataFrame,保留df2的所有行,同时将df中对应匹配行的PRICE值带入,无匹配的行自动填充NaN。

代码实现

1. 导入库并构造示例数据

import pandas as pd

# 原始数据df(含PRICE列)
df = pd.DataFrame({
    'id': [1, 2, 3, 4],
    'TITLE': ['苹果', '香蕉', '橙子', '葡萄'],
    'CODE': ['FRU001', 'FRU002', 'FRU003', 'FRU004'],
    'PRICE': [5.99, 3.99, 4.99, 6.99]
})

# 需要填充的df2(无PRICE列)
df2 = pd.DataFrame({
    'id': [1, 2, 3, 5],
    'TITLE': ['苹果', '香蕉', '芒果', '葡萄'],
    'CODE': ['FRU001', 'FRU002', 'FRU005', 'FRU004']
})

2. 执行匹配填充

# 仅关联需要的列(避免重复id列),基于TITLE和CODE左连接
result_df = df2.merge(df[['TITLE', 'CODE', 'PRICE']], on=['TITLE', 'CODE'], how='left')

3. 查看结果

打印result_df会得到:

id TITLE    CODE  PRICE
0   1   苹果  FRU001   5.99
1   2   香蕉  FRU002   3.99
2   3   芒果  FRU005    NaN
3   5   葡萄  FRU004   6.99

注意事项

  • 如果df中存在重复的TITLE+CODE组合,会导致结果出现重复行,可先对df去重:
    df_clean = df.drop_duplicates(subset=['TITLE', 'CODE'], keep='first')
    result_df = df2.merge(df_clean[['TITLE', 'CODE', 'PRICE']], on=['TITLE', 'CODE'], how='left')
    
  • 确保TITLE和CODE列的数据类型一致(比如都是字符串),否则可能出现匹配失败的情况。

内容的提问来源于stack exchange,提问作者Ben-geo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 21:10:23