Python pandas 分隔符打印错误 - 双号

Python pandas delimiter misprint - double sign

这是我打开文件的代码:

df = pd.read_csv(path_df, delimiter='|')

我收到错误:标记化数据时出错。 C 错误:第 13571 行应有 5 个字段,结果为 6

当我检查这一行时,我发现有一个印刷错误,有 3 个符号“|||”而不是一个。我更愿意将双重和三重标志视为一个。可能还有其他解决方案。

我该如何解决这个问题?

另一种定义分隔符的方法是在读取 pandas.

中的 CSV 时使用 sep
df = pd.read_csv(path_df, sep=r'\|+', engine='python')

每当您注意到 'C error' 时,它需要通过在参数中指定 engine='python' 来强制使用 python 引擎。

使用正则表达式分隔符 [|]+ - 一个或多个 |:

import pandas as pd

temp=u"""a|b|c
ss|||s|s
t|g|e"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), sep="[|]+",engine='python')

print (df)
    a  b  c
0  ss  s  s
1   t  g  e

我怀疑这是由于文件写入不正确造成的,如果该字段应该包含值“|”但是不知何故写错了(csv通常会写这样一行1|2|3|"|"|5),但是如果写错了没有任何转义就会导致这个问题。

在那种情况下,我认为您无法使用 pandas 解决此问题,因为问题的 csv 格式不正确。

如果是一次性的,您可以先编辑文件,也许要替换所有“|||”用“||” - 但同样可能会产生意想不到的后果。我以前遇到过这个问题,我认为没有比手动编辑文件更好的方法了(至少 pandas 给了你要查看的行号!)

另一方面,如果它真的只是一个重复的字符打印错误,那么其他答案也可以。