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

如何查找pandas DataFrame指定列的公共子串并替换对应单元格值

pandas实现Solution Name列公共子串归一化+按Detail去重

实现代码

直接运行以下代码即可得到预期结果:

import pandas as pd

# 构造原始测试数据
df = pd.DataFrame({
    "Solution Name": ["Cleanser", "Cleanser(1+2)", "Cleanserx3", "Trial", "Incremental Trial"],
    "Detail": ["ContentA", "ContentA", "ContentB", "ContentC", "ContentC"]
})

# 提取核心公共子串:筛选出被至少1个其他Solution Name包含的字符串
all_names = df["Solution Name"].unique()
core_keys = [s for s in all_names if sum(s in other for other in all_names if s != other) > 0]

# 将原Solution Name替换为匹配到的核心子串
df["Solution Name"] = df["Solution Name"].apply(
    lambda x: next((k for k in core_keys if k in x), x)
)

# 联合两列去重,保留Detail不同的行
df = df.drop_duplicates(subset=["Solution Name", "Detail"]).reset_index(drop=True)

结果验证

运行后打印df输出完全符合预期:

Solution NameDetail
CleanserContentA
CleanserContentB
TrialContentC

逻辑说明

  • 核心子串识别不需要引入额外的字符串匹配库,直接利用子串包含关系判断:如果某个Solution Name值是其他至少一个值的子串,就认定为同组的统一公共子串
  • 替换时逐行匹配第一个命中的核心子串即可,适配给出的所有样例场景
  • 最后通过两列联合去重,自动过滤同组下同Detail的重复行,只保留Detail有差异的条目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:57:20