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

Pandas基于子字符串匹配实现跨DataFrame列值映射填充

Pandas子串匹配填充字段实现

直接通过字段遍历+子串判断即可完成匹配填充,无需额外复杂依赖。

  • 匹配规则:逐行检查df1的Item_Description字段,若df2中某条记录的Item是该描述的子串,就把对应Commodity_Code填入df1当前行
  • 无匹配项时默认保留空值,需要其他默认值可自行修改返回逻辑

完整代码

import pandas as pd

# 原始数据定义
df1 = pd.DataFrame({
    'Item_Description': [
        'SYD_SYDNEY AIRPORTS CORPORATION LIMITED-Aircraft Parking :Sep',
        'SYD_QANTAS AIRWAYS LTD-Turn Cost :Sep',
        'SYD_SNP SECURITY SERVICES PTY LTD-Aircraft Security :Sep'
    ],
    'Commodity_Code': ["", "", ""]
})

df2 = pd.DataFrame({
    'Item': ['Turn Cost', 'Aircraft Security', 'Aircraft Parking'],
    'Commodity_Code': [24101900, 92121700, 78141805]
})

# 定义匹配函数
def get_matched_code(desc_text):
    for _, item_row in df2.iterrows():
        if item_row['Item'] in desc_text:
            return item_row['Commodity_Code']
    return ""

# 执行填充
df1['Commodity_Code'] = df1['Item_Description'].apply(get_matched_code)

最终输出结果

执行代码后df1的内容如下,完全符合匹配要求:

Item_DescriptionCommodity_Code
SYD_SYDNEY AIRPORTS CORPORATION LIMITED-Aircraft Parking :Sep78141805
SYD_QANTAS AIRWAYS LTD-Turn Cost :Sep24101900
SYD_SNP SECURITY SERVICES PTY LTD-Aircraft Security :Sep92121700

提示:如果单条描述可能匹配多个df2中的Item值,代码默认返回df2中排序靠前的匹配项对应编码,可根据业务需要调整df2的排序或者匹配判断逻辑修改优先级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:32:30