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

Pandas如何不逐行遍历删除字符串列中的重复拼接子串

Pandas 重复字符串半段截取方案

你遇到的字符串规律统一:所有待处理值都是目标结果完整重复2次拼接得到,直接使用Pandas内置向量化字符串接口即可完成处理,全程无需逐行for循环,处理性能远高于逐行遍历。


核心实现

假设待处理列名为ticker,所属DataFrame为df,处理代码仅需1行:

df['clean_ticker'] = df['ticker'].str[:df['ticker'].str.len()//2]

实现逻辑

  1. 调用df['ticker'].str.len()向量化计算每行字符串的总长度:由于字符串是目标结果重复2次拼接而成,总长度必然为偶数,整除2即可得到每行目标结果的对应长度
  2. 调用Pandas字符串切片语法str[:n],按每行计算得到的半长截取前半段内容,直接输出目标结果

效果验证

所有测试场景均能得到预期输出:

  • 原值XOMXOM:总长度6,半长3,输出XOM
  • 原值ZMZM:总长度4,半长2,输出ZM
  • 原值AAPLAAPL:总长度8,半长4,输出AAPL
  • 长测试值ABCDEFGHIJABCDEFGHIJ:总长度20,半长10,输出ABCDEFGHIJ

异常值兼容(可选)

如果数据源可能存在不符合「双次重复」规律的脏数据,可以增加校验逻辑,对不满足规则的值标记为空值,避免错误截取:

import pandas as pd
s = df['ticker']
half_len = s.str.len() // 2
# 校验前半段与后半段是否完全一致
valid_flag = s.str[:half_len] == s.str[half_len:]
df['clean_ticker'] = s.str[:half_len].where(valid_flag, pd.NA)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:39:16