【问题标题】:Trailing delimiter confuses pandas read_csv尾随分隔符使熊猫 read_csv 感到困惑
【发布时间】:2012-11-23 02:02:12
【问题描述】:

一个 csv(逗号分隔)文件,其中行有一个额外的尾随分隔符,似乎混淆了pandas.read_csv。 (数据文件为[1])

它将额外的分隔符视为额外的列。所以比标题要求的多一列。然后pandas.read_csv 将第一列作为行标签。总体效果是列和标题不再对齐 - 第一列成为行标签,第二列由第一个标题命名,等等。

这很烦人。知道如何告诉pandas.read_csv 做正确的事吗?我找不到。

好书,顺便说一句。


[1]: 2012 FEC Election Database 来自 Python for Data Analysis 一书的第 9 章

【问题讨论】:

    标签: python pandas numpy csv delimiter


    【解决方案1】:

    对于所有仍在寻找此内容的人。韦斯为此写了一封blogpost。如果行中的一个值过多,则将其视为行名称。

    可以通过将index_col=False 设置为read_csv 的选项来更改此行为。

    【讨论】:

      【解决方案2】:

      我创建了一个 GitHub 问题来看看自动处理这个问题:

      https://github.com/pydata/pandas/issues/2442

      我认为 FEC 文件格式发生了轻微变化,导致了这个烦人的问题——如果你使用这里发布的 http://github.com/pydata/pydata-book ,你希望不会有这个问题。

      【讨论】:

      • 很高兴知道这本书有一个 github 存储库。谢谢,韦斯。
      • 我只是想知道这个问题发生在其他地方;我刚刚从 NOAA 气候网站下载了一些天气数据,每个 CSV 文件的末尾都有一个额外的逗号。我想出了上面列出的相同解决方法。这很烦人,我花了一段时间才弄清楚为什么 read_csv() 不起作用。
      【解决方案3】:

      嗯,有一个非常简单的解决方法。在读取 csv 文件时在标题中添加一个虚拟列:

      cols = ...
      cols.append('')
      records = pandas.read_csv('filename.txt', skiprows=1, names=cols)
      

      然后列和标题再次对齐。

      【讨论】:

        猜你喜欢
        • 2017-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-18
        • 1970-01-01
        • 2020-05-23
        • 2021-11-09
        • 1970-01-01
        相关资源
        最近更新 更多