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

Python pandas实现不同DataFrame逗号分隔字符串匹配及关联列新增

解决方案

你的原始代码存在3个核心问题:

  • 逻辑运算符优先级错误:&优先级高于==,不加括号会导致判断逻辑完全混乱
  • 未处理多值匹配逻辑:DF Two的col item是逗号分隔的多值字符串,不能直接和DF One的单值col item做全等判断
  • 未处理字符串冗余空格:原始数据的文本字段存在大量首尾空格,会导致看起来内容相同的字段匹配失败

实现代码

import pandas as pd

# 第一步:统一处理所有文本字段的首尾空格,消除匹配误差
df_one['col name'] = df_one['col name'].str.strip()
df_one['col item'] = df_one['col item'].str.strip()
df_two['col name'] = df_two['col name'].str.strip()
df_two['col item'] = df_two['col item'].str.strip()

# 第二步:拆分DF Two的多值col item,展开为一行对应单个item的格式
df_two_exploded = df_two.assign(
    # 按逗号拆分多值字段为列表
    single_item = df_two['col item'].str.split(',')
).explode('single_item')
# 处理拆分后单个item的首尾空格
df_two_exploded['single_item'] = df_two_exploded['single_item'].str.strip()

# 第三步:关联匹配,把对应col code写入DF One新列
df_one = df_one.merge(
    # 只取匹配需要的三个字段,避免冗余
    df_two_exploded[['col name', 'single_item', 'col code']],
    # 匹配规则:col name相同,且DF One的col item等于拆分后的单个item
    left_on = ['col name', 'col item'],
    right_on = ['col name', 'single_item'],
    # 左连接保留DF One所有原始行,未匹配到的新列值为NaN
    how = 'left'
# 重命名新列,删除冗余字段
).rename(columns={'col code': 'new_col'}).drop(columns='single_item')

如果需要给未匹配到的行填充默认值,可以在上述代码执行后添加:

df_one['new_col'] = df_one['new_col'].fillna('你需要的默认值')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:51:03