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

如何移除DataFrame字符串列中可能存在的重复后缀?

移除字符串中重复的后缀(以文件名为例)

问题场景

现有如下Pandas DataFrame,其中Book列(字符串类型)存在重复后缀的情况:

Book
0   Book1.pdf
1   Book2.pdf.pdf
2   Book3.epub
3   Book4.mobi.mobi
4   Book5.epub.epub

期望处理后移除重复的后缀,得到结果:

Book
0   Book1.pdf
1   Book2.pdf
2   Book3.epub
3   Book4.mobi
4   Book5.epub

注:此处仅以文件路径为例,该列内容也可为其他类型字符串。

此前尝试过按.拆分字符串,通过统计最后一项的出现次数来检查重复。

解决方案

方法1:字符串拆分逻辑判断

通过拆分字符串,检查末尾两段内容是否一致,若重复则保留到倒数第二段,否则保留原字符串:

import pandas as pd

df = pd.DataFrame({
    'Book': ['Book1.pdf', 'Book2.pdf.pdf', 'Book3.epub', 'Book4.mobi.mobi', 'Book5.epub.epub']
})

def remove_duplicate_suffix(s):
    parts = s.split('.')
    # 仅当拆分后至少有两段且最后两段内容相同时,移除重复后缀
    if len(parts) >= 2 and parts[-1] == parts[-2]:
        return '.'.join(parts[:-1])
    return s

df['Book'] = df['Book'].apply(remove_duplicate_suffix)
print(df)

方法2:正则表达式批量替换

用正则匹配末尾重复的后缀模式,直接替换为单个后缀,适合批量处理不同类型的重复后缀:

import pandas as pd
import re

df = pd.DataFrame({
    'Book': ['Book1.pdf', 'Book2.pdf.pdf', 'Book3.epub', 'Book4.mobi.mobi', 'Book5.epub.epub']
})

# 匹配形如 ".xxx.xxx" 的末尾重复后缀,替换为 ".xxx"
df['Book'] = df['Book'].apply(lambda x: re.sub(r'(\.[a-zA-Z0-9]+)\1$', r'\1', x))
print(df)

方法说明

  • 方法1逻辑直观,可根据需求灵活调整判断规则,适合明确场景的处理;
  • 方法2通过正则实现更简洁,能适配多种格式的重复后缀,通用性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:57:11