2012-12-05 61 views
6

我从以下书中例子Python的数据分析。特别是,从第9章开始的2012年选举数据库。数据位于一个大的csv文件中,用逗号分隔。但是文件的每一行都有一个额外的尾随分隔符,这似乎混淆了pandas.read_csv蟒蛇大熊猫 - 尾随分隔符混淆read_csv

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

这很烦人。任何想法如何告诉pandas.read_csv做正确的事情?我找不到一个。

伟大的书,顺便说一句。

回答

2

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

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

我觉得FEC文件格式略加改变,导致这恼人的issue--如果你使用一个张贴在这里http://github.com/pydata/pydata-book你希望不会有这个问题。

+0

很高兴知道这本书有一个github回购。谢谢,韦斯。 – edwardw

+0

我只是想说这个问题发生在其他地方。我刚刚从NOAA气候网站下载了一些天气数据,每个CSV文件的末尾都有一个逗号。我想出了与上面列出的相同的解决方法。这很烦人,并花了我一段时间来找出为什么read_csv()不起作用。 – user2072880

3

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

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

然后再次对齐列和标题。

6

大家谁仍在寻找这一点。 Wes写了一个关于这个的blogpost。如果行中有一个值太多,则将其视为行名称。

这种行为可以通过设置index_col=False作为一个选项read_csv改变。