16

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

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

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

好书,顺便说一句。


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

4

3 回答 3

17

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

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

于 2015-08-05T17:52:44.790 回答
6

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

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

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

于 2012-12-06T22:17:05.597 回答
5

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

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

然后列和标题再次对齐。

于 2012-12-06T13:07:17.760 回答