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

如何识别并提取DataFrame单元格重复字符串,同时修正内容

解决方案

步骤说明

我们可以通过自定义处理函数结合Pandas完成需求:识别每行重复字符串、提取重复项、修正名称,最终生成目标格式的DataFrame。

代码实现

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'id': [1, 2, 3],
    '另一表头': ['JohnWalter walter', 'AdamSmith Smith', 'Steve Rogers rogers']
})

# 重命名原列名为目标中的"名称"
df = df.rename(columns={'另一表头': '名称'})

def process_name(name_str):
    # 将字符串按空格分割为片段
    parts = name_str.split()
    # 转换为小写用于匹配重复项(忽略大小写)
    lower_parts = [p.lower() for p in parts]
    
    # 找出重复出现的字符串
    duplicate = None
    for part in parts:
        if lower_parts.count(part.lower()) >= 2:
            duplicate = part
            break
    
    # 修正名称:处理两种情况——合并的名字拆分、末尾重复项移除
    corrected_name = name_str
    if duplicate:
        # 情况1:末尾是重复项,直接移除
        if parts[-1].lower() == duplicate.lower():
            corrected_name = ' '.join(parts[:-1])
        # 情况2:前面的合并字符串包含重复项的大写形式,拆分合并项
        elif duplicate.capitalize() in parts[0]:
            corrected_name = parts[0].replace(duplicate.capitalize(), f' {duplicate}').lstrip()
    
    return duplicate, corrected_name

# 应用函数生成新列
df[['poped_out_string', 'corrected_name']] = df['名称'].apply(lambda x: pd.Series(process_name(x)))

# 查看结果
print(df)

输出结果

id名称poped_out_stringcorrected_name
1JohnWalter walterwalterJohn walter
2AdamSmith SmithSmithAdam Smith
3Steve Rogers rogersrogersSteve Rogers

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:55:47