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

如何删除DataFrame列中不属于对应字典值的多余子串

实现代码

import pandas as pd

# 替换为你自己的原始DataFrame和字典即可
df = pd.DataFrame({'A': ['foo'], 'B': ['A, B, C, D']})
d = {'foo': 'A, B, C'}

# 预处理字典:把每个键对应的合法子串转为集合,提升匹配速度
valid_rule = {k: set(v.split(', ')) for k, v in d.items()}

# 逐行处理B列,过滤掉非允许的子串
df['B'] = df.apply(
    lambda row: ', '.join([i for i in row['B'].split(', ') if i in valid_rule[row['A']]]),
    axis=1
)

运行后输出的df即为所需结果:

AB
fooA, B, C

逻辑说明

  • 提前预处理字典是为了避免每次匹配都重复拆分字符串,用集合做存在性判断的时间复杂度是O(1),数据量较大时性能更好
  • 该写法支持多行数据批量处理,只要A列的所有取值都在字典的键的覆盖范围内即可正常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:06:04