【问题标题】:pandas field separator and double quotes熊猫字段分隔符和双引号
【发布时间】:2022-11-24 06:33:19
【问题描述】:

我需要在 pandas 中加载一个不是 100% CSV“兼容”的 CSV 文件,下面是一个例子:

"Transaction date";"Accounting date";"Counterparty's data";"Title"
2021-08-22;2021-08-22;" "SPOLEM" ASS "ALDONA" AUGUSTOW ";" Title 450"
2019-09-02;2019-09-02;" 13XYZ05 "SKOWRONEK" NIEGOWA ";" Title 1300"
2010-07-18;2010-07-18;" APTEKA "SLOWINSKA" SPOLKALEBA ";" Title 123"

我使用以下命令将此 csv 文件 (csv_in) 读取到 pandas 数据框中:

df = pd.read_csv(csv_in, \
                 delimiter=';', \
                 engine='python', \
                 quoting=1)

我知道错误的 csv 格式是罪魁祸首,但是:

  • 我如何指示 pandas 指示进程在哪一行中断,而不是简单地通知我pandas.errors.ParserError: ';'预期在 '"' 之后...我想知道它在 csv_in 文件的哪一行损坏了...拥有一个 6500 行的文件,您可以想象我在没有任何帮助的情况下找到这些格式错误的行是多么困难,除了“嘿,有错误!”
  • 是否可以指示 pandas 使用组合 [;"] 作为起始文本字段和 [";] 作为结束文本字段?这应该可以解决问题,显然 CSV 模块(导入 csv)以某种方式理解该模块读取文件而不会抛出错误,也不会跳过行

谢谢! 埃文

【问题讨论】:

    标签: python-3.x pandas dataframe csv quotes


    【解决方案1】:

    指定 quotechar 并删除引擎属性(导致 C 成为默认值)

    
    pd.read_csv("csv2.txt", 
                     delimiter=';', 
                     quotechar='"')
    
        Transaction date    Accounting date     Counterparty's data     Title
    0   2021-08-22  2021-08-22  SPOLEM" ASS "ALDONA" AUGUSTOW "     Title 450
    1   2019-09-02  2019-09-02  13XYZ05 SKOWRONEK" NIEGOWA "    Title 1300
    2   2010-07-18  2010-07-18  APTEKA SLOWINSKA" SPOLKALEBA "  Title 123
    

    【讨论】:

      猜你喜欢
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      • 2021-03-14
      • 1970-01-01
      • 2016-06-11
      • 1970-01-01
      相关资源
      最近更新 更多