【问题标题】:How to read csv files where some values contain comma by pandas?如何通过熊猫读取某些值包含逗号的csv文件?
【发布时间】:2016-08-28 04:08:54
【问题描述】:

我已经搜索了一些方法如何读取值包含逗号的 csv 文件,但我从未见过如何仅通过 pandas 成功读取它。

例如,csv 文件包含“A”、“B”、“C”、“D”、“E”、“F”列,其中只有“C”列值包含逗号。

C列值的类型是字符串

我试过这个:

pd.read_csv('my.csv',quotechar="'")

但它会返回

CParserError: Error tokenizing data. C error: Expected 6 fields in line 1553, saw 7

更新:

C 列中的某些值以逗号开头,例如“,hello”,而某些值之间的逗号例如“hello,hello,hello”

如何设置参数quotechar来解决我的问题?

【问题讨论】:

  • C 列有引号吗?
  • 更好的是,您能在此处发布几行 CSV(例如第 1550 到 1555 行)吗?
  • 没有例子不清楚,但这可能是相关的; stackoverflow.com/questions/24079304/…
  • 对不起,我又查了资料,详细已经更新了。
  • 也许你需要quotechar = '"'(撇号之间的引号)。如果这两种组合都不起作用,则文件中的数据可能格式不正确(在第 1553 行?)。

标签: python csv pandas


【解决方案1】:

我在尝试使用 pandas 解析包含 SQL 查询的 CSV 文件时遇到了此类问题,因此在某些列中涉及逗号。

为了解决这个问题,我们不得不为我们的列使用另一个分隔符而不是逗号,并相应地设置 pandas.read_csv 中的“sep”属性,如下所示:

df = pd.read_csv(path, sep=';')

个人,因为我很懒,如果我是你,我会在你作为输入的 CSV 中将分隔符从逗号更改(或要求更改)其他内容(如分号)。

但如果你不能,这是我在寻找解决方案时发现的:

Pandas Read CSV with string delimiters via regex

正如您在该代码中看到的那样,使用了正则表达式,并允许用户解析其 csv 文件,而没有为 pandas 明确定义分隔符,方法是在正则表达式中说明要提取的值以及如何提取。

我不是正则表达式方面的专家,但它可能适合您的需求。

【讨论】:

    猜你喜欢
    • 2015-05-30
    • 2016-11-22
    • 1970-01-01
    • 2013-01-02
    • 2014-01-20
    • 2014-01-14
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    相关资源
    最近更新 更多