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

基于多分隔符拆分CSV并检测重复行,Pandas按列字符串拆分复制行

Pandas按指定列拆分字符串并复制行(支持多分隔符+去重)

你提到的逐行循环确实不是最优解,Pandas有一套更简洁高效的内置方法来处理这种场景,核心用到str.split()和explode(),下面一步步给你演示实现方式:

1. 单分隔符场景(以"|"为例)

针对你给出的示例,我们可以这样快速处理:

import pandas as pd

# 读取输入CSV
df = pd.read_csv("in_csv.csv")

# 拆分col1的字符串为列表格式
df['col1'] = df['col1'].str.split('|')

# 将列表展开,每个列表元素对应一行(自动复制其他列的内容)
df = df.explode('col1')

# 可选:清理列值前后的空格(适配你CSV里带空格的格式)
df = df.apply(lambda x: x.str.strip() if x.dtype == "object" else x)

# 保存到输出CSV
df.to_csv("out_csv.csv", index=False)

这段代码运行后就能得到你想要的输出,完全不需要手动循环,数据量越大,这种方法的效率优势越明显。

2. 多分隔符场景

如果需要同时支持多种分隔符(比如|、,、;),可以利用str.split()的正则表达式功能,把多个分隔符用正则字符集包裹:

# 示例:同时支持"|"和","作为分隔符
df['col1'] = df['col1'].str.split('[|,]')
# 后续同样用explode展开行
df = df.explode('col1')
# 清理空格
df = df.apply(lambda x: x.str.strip() if x.dtype == "object" else x)

这样就能一次性处理多种分隔符的拆分需求。

3. 检测并去除重复行

处理完拆分后,如果需要检测并删除重复行,可以用drop_duplicates()方法:

# 方式1:删除所有列完全重复的行
df = df.drop_duplicates()

# 方式2:仅根据指定列判断重复(比如只看col2和col3)
df = df.drop_duplicates(subset=['col2', 'col3'], keep='first')

参数说明:

  • subset:指定用来判断重复的列,默认是所有列
  • keep:可选'first'(保留第一行重复行)、'last'(保留最后一行)或False(删除所有重复行)

把这些步骤结合起来,就能一次性完成拆分、行复制和去重的全部需求啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:08:05