python pandas - 尾随分隔符混淆read_csv

时间:2012-12-05 09:29:44

标签: python numpy

我正在关注 Python for Data Analysis 一书中的示例。具体来说,2012年选举数据库来自第9章。数据位于一个大的csv文件中,以逗号分隔。但是文件的每一行都有一个额外的尾随分隔符,这似乎会使pandas.read_csv混淆。

它将额外的分隔符视为有一个额外的列。因此,除了标题所需的列之外,还有一列。然后pandas.read_csv将第一列作为行标签。总体效果是列和标题不再对齐 - 第一列成为行标签,第二列由第一个标题命名,等等。

这很烦人。知道怎么告诉pandas.read_csv做对了吗?我找不到一个。

好书,BTW。

3 个答案:

答案 0 :(得分:10)

对于仍然发现这一点的每个人。韦斯写了blogpost这个。如果行中有一个值太多而被视为行名称的问题。

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

答案 1 :(得分:4)

我创建了一个GitHub问题,以便自动处理此问题:

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

我认为FEC文件格式略有改变导致这个恼人的问题 - 如果您使用此处发布的http://github.com/pydata/pydata-book,您希望不会出现这个问题。

答案 2 :(得分:3)

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

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

然后列和标题再次对齐。