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

Pandas DataFrame按逗号拆分列时如何忽略双引号内的逗号

解决方案

最优方案:直接使用pandas内置csv解析能力

你当前的错误用法是手动读取文件行转DataFrame后拆分,完全浪费了pandas自带的csv解析逻辑,pd.read_csv原生支持识别引号包裹字段,自动忽略引号内的分隔符,无需手动拆分:

with sftp.open(a) as f:
    df = pd.read_csv(
        f,
        quotechar='"', # 指定双引号为字段包裹标识,自动忽略引号内的逗号
        skipinitialspace=True, # 自动去掉逗号后的多余空格
        parse_dates=[2] # 如果需要直接把第三列识别为日期格式,可以加这个参数
    )

该方案读取完成后直接得到4列数据,字符串字段的包裹引号会被自动去除,也不会拆分引号内部的逗号,字段类型会自动适配。

备选方案:必须处理单列DataFrame时用正则拆分

如果你确实有特殊场景只能拿到已生成的单列DataFrame,使用正则匹配替代普通的str.split,匹配规则会自动跳过引号内的逗号:

import re
# 正则匹配:匹配双引号包裹的内容 或 不包含逗号的内容
split_pattern = re.compile(r'"?(.*?)"?(?=\s*,|$)')
# 拆分后删除空列
df = df[0].str.extractall(split_pattern).groupby(level=0).first().unstack().dropna(axis=1)
# 如果你需要把字符串内部的逗号去除(比如示例中将Tim, hortons转为Tim hortons),加一步替换
df = df.replace(',', ' ', regex=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:12:03