【问题标题】:python pandas separator within quote leading to error tokenizing引号内的python pandas分隔符导致错误标记化
【发布时间】:2020-09-11 00:38:40
【问题描述】:

我有一个包含如下数据的 .csv:

....
"4", "mercedes", "BLT254", "Arkis-UDV GmbH, Berlin, Oberweg", "2007"
"5", "bmw", "SUV873", "Meier Auto", "2013"
....

我尝试通过 read_csv 读取它:

data = pd.read_csv("Auszug_2020.csv", sep = ",", encoding = "ISO-8859-1", quotechar = '"')

每个数据块都包裹在一个“”中。在引号内,有时会出现分隔符“,”。那是个问题!我以为我可以通过使用 quoechar = '"' 来解决这个问题,不幸的是它仍然无法正常工作。

ParserError:标记数据时出错。 C 错误:预计第 4 行中有 5 个字段,看到 7

我做错了什么?

编辑: 我的错!编码是“utf-16”,我刚刚意识到。现在一切正常。 请原谅我python pandas,我再也不会说你的坏话了。

【问题讨论】:

  • sep 参数可以接受正则表达式。由于我没有使用它,我无法给你正确的解决方案,但也许如果你对正则表达式感到满意,你可以尝试一个
  • 我真的很想知道这样一个简单的“问题”怎么能用 python pandas 这么难解决。我认为这是我能想象到的最基本/标准的用例之一......

标签: python pandas separator


【解决方案1】:

按照您分享的示例数据,您可以尝试这样阅读吗:

df = pd.read_csv("sample.csv", header=None, sep='", "')
df.iloc[:, 0] = df.iloc[:, 0].str.replace('"', '')
df.iloc[:,-1] = df.iloc[:,-1].str.replace('"', '')

我测试如下:

创建了一个包含 4 条记录的示例 csv 文件:

"4", "mercedes", "BLT254", "Arkis-UDV GmbH, Berlin, Oberweg", "2007"
"5", "bmw", "SUV873", "Meier Auto", "2013"
"4", "mercedes", "BLT254", "Arkis-UDV GmbH, Berlin, Oberweg", "2007"
"5", "bmw", "SUV873", "Meier Auto", "2013"

要测试的代码:

import pandas as pd

df = pd.read_csv("sample.csv", header=None, sep='", "')
df.iloc[:, 0] = df.iloc[:, 0].str.replace('"', '')
df.iloc[:,-1] = df.iloc[:,-1].str.replace('"', '')

print(df)

输出:

   0         1       2                                3     4
0  4  mercedes  BLT254  Arkis-UDV GmbH, Berlin, Oberweg  2007
1  5       bmw  SUV873                       Meier Auto  2013
2  4  mercedes  BLT254  Arkis-UDV GmbH, Berlin, Oberweg  2007
3  5       bmw  SUV873                       Meier Auto  2013

【讨论】:

    【解决方案2】:

    使用pd.read_csv 方法中的可选参数skipinitialspace=True 跳过分隔符, 之后的空格,这将产生所需的结果:

    data = pd.read_csv(
        "Auszug_2020.csv", sep=",", encoding="ISO-8859-1",
        quotechar='"', skipinitialspace=True)
    

    【讨论】:

    • 它仍然是:ParserError:错误标记数据。 C 错误:预计第 4 行中有 5 个字段,看到 7
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 2013-08-14
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多