Pandas中如何移除DataFrame行字符串内的重复前缀片段
实现方法
针对3万行规模的DataFrame,用pandas内置的向量化字符串操作是效率最高的方案,全程不会改动非目标行的正常数据,处理耗时在毫秒级。
- 核心逻辑:通过正则精准匹配字符串开头位置重复出现的
WT_d8_r2_前缀,只把连续重复的双前缀替换为单前缀,其余位置、其余开头的字符串完全不受影响。 - 注意不要用逐行
apply的写法,向量化操作的性能比逐行Python循环高两个数量级,大数据量下差距更明显。
具体代码
假设你存储序列ID的列名为seq_id(如果是无表头读入的数据,第一列默认列名是0,替换成对应列名即可):
# 定向替换开头重复的前缀,^是正则开头锚定符,避免误替换字符串中间的偶然相同片段 df['seq_id'] = df['seq_id'].str.replace( pat=r'^WT_d8_r2_WT_d8_r2_', repl='WT_d8_r2_', regex=True )
结果校验
处理完成后可以执行以下代码确认修正效果,返回剩余错误行数为0即代表全部处理完成:
remaining_error = df[df['seq_id'].str.startswith('WT_d8_r2_WT_d8_r2_')].shape[0] print(f"剩余未修正错误行:{remaining_error}")
该写法鲁棒性足够:哪怕后续新增其他前缀的样本、或者WT组样本的序列中间偶然出现
WT_d8_r2片段,都不会被误修改,完全匹配需求。
内容的提问来源于stack exchange,提问作者yami
相关产品推荐
相关产品推荐

