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

Python中如何合并名称列含相似名称的行并拼接对应URL字段

Python实现路径类相似名称的行合并

针对层级路径类的名称合并需求,核心是先识别每个路径对应的存在于数据集内的最短前缀根路径,再按根路径分组拼接url字段,不需要硬编码前缀规则,适配任意层级的路径结构。

实现步骤

  • 加载原始数据为pandas DataFrame,将所有name值存入集合,用于后续快速判断前缀是否存在
  • 对每一行的路径,按/从左到右逐级拼接短路径,找到第一个存在于name集合中的路径,即为该行归属的根名称
  • 按识别出的根名称分组,将同组内的url用逗号拼接,输出最终结果

完整代码

import pandas as pd

# 替换为你的数据读取逻辑,例:df = pd.read_csv("your_file.csv")
df = pd.DataFrame([
    {"name": "downloads/john joe", "url": "www.A.com"},
    {"name": "downloads/john joe/2", "url": "www.AB.com"},
    {"name": "downloads/john joe/94", "url": "www.ABC.com"},
    {"name": "downloads/john joe/94/100", "url": "www.ABCD.com"},
    {"name": "downloads/apple chew/134", "url": "www.BBC.com"},
])

name_set = set(df["name"].tolist())

def match_root(full_path: str) -> str:
    path_segments = full_path.split("/")
    # 从最短路径开始匹配,找到第一个存在于数据集内的前缀作为根
    for seg_count in range(1, len(path_segments) + 1):
        check_prefix = "/".join(path_segments[:seg_count])
        if check_prefix in name_set:
            return check_prefix
    return full_path

df["root_key"] = df["name"].apply(match_root)
# 分组拼接url
result = df.groupby("root_key", as_index=False)["url"].agg(", ".join).rename(columns={"root_key": "name"})

运行代码后得到的结果完全匹配预期:

nameurl
downloads/john joewww.A.com, www.AB.com, www.ABC.com, www.ABCD.com
downloads/apple chew/134www.BBC.com

说明

  • 该方案自动适配路径层级,不需要提前指定前缀长度,只要根路径存在于原始数据的name列中即可正确归并
  • 此前遍历+concat未得到预期结果,通常是因为没有做最短根路径匹配,直接按固定长度截断前缀,导致子路径归属错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:48:45