【问题标题】:Handling Extra Delimiters in CSV using Pandas read_csv使用 Pandas read_csv 处理 CSV 中的额外分隔符
【发布时间】:2018-07-12 05:03:46
【问题描述】:

我有一个 CSV 文件,它偶尔会在文本字段中包含分隔符。我没有引号字符,也无法控制如何获取此信息。

我希望能够添加额外的列,以便我可以轻松识别不正确的行,然后努力修复它们。

我目前正在使用以下代码并收到以下错误:

  for df in pd.read_csv(input_text_file, chunksize=20000, iterator=True, encoding='utf-8', sep='|',     quoting=3, na_values=''): 

    df.names = ['RealColumns1', 'RealColumns2', 'RealColumns3', 'ExtraColumn1', 'ExtraColumn2', 'ExtraColumn3] 

    df.to_sql('Table', conn, if_exists='append', index=False) 

错误:

预计第 23685498 行中的 3 个字段,看到 4 个

我期待,因为我添加了额外的列,当它到达带有额外分隔符的行时,它只会添加 4 列。

【问题讨论】:

    标签: pandas sqlite csv


    【解决方案1】:

    经过几次不同的尝试后,我想通了。

    似乎一旦我在 for 循环之前定义了列名并声明 header = None 它似乎工作。它看起来像这样:

    所以我的代码现在看起来像这样:

         names = ['RealColumns1', 'RealColumns2', 'RealColumns3', 'ExtraColumn1', 'ExtraColumn2', 'ExtraColumn3] 
    
     for df in pd.read_csv(input_text_file, chunksize=20000, header = None, dtype = names, iterator=True, encoding='utf-8', sep='|', quoting=3, na_values=''): 
    
    
        df.to_sql('Table', conn, if_exists='append', index=False) 
    

    【讨论】:

      猜你喜欢
      • 2017-10-25
      • 1970-01-01
      • 2017-05-05
      • 2015-09-20
      • 2012-07-30
      • 1970-01-01
      • 2021-06-24
      • 2021-06-25
      相关资源
      最近更新 更多