尾部定界符会使大熊猫混淆read_csv

问题描述 投票:11回答:3

一个csv(逗号分隔)文件,其中的行带有一个额外的结尾定界符,似乎使pandas.read_csv感到困惑。 (数据文件为[1])

它将多余的定界符当作额外的列对待。因此,列比标题所需的多一列。然后pandas.read_csv将第一列作为行标签。总体效果是,列和标题不再对齐-第一列成为行标签,第二列由第一个标题命名,等等。

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

很棒的书,顺便说一句。


[[1]:2012选举数据库,来自该书的第9章Python for Data Analysis

python pandas numpy csv delimiter
3个回答
5
投票

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

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

我认为FEC文件格式略有变化,从而引起了这一令人讨厌的问题-如果您使用此处发布的格式http://github.com/pydata/pydata-book,希望不会出现此问题。


11
投票

对于仍在寻找这个的每个人。韦斯为此写了blogpost。如果行中的一个值太多,将被视为行名。

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


3
投票

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

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

然后,列和标题再次对齐。

© www.soinside.com 2019 - 2024. All rights reserved.