首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在熊猫中打开一个损坏的csv文件的策略

在熊猫中打开一个损坏的csv文件的策略
EN

Stack Overflow用户
提问于 2014-01-16 06:59:21
回答 3查看 3.5K关注 0票数 1

我有一堆csv文件,我正在Pandas中加载这些文件,但是有一个文件出错了--我是这样打开它的:

代码语言:javascript
复制
df = pd.DataFrame.from_csv(csv_file)

错误:

文件"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/frame.py",第1268行,from_csv encoding=encoding,tupleize_cols=False)文件"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/io/parsers.py",行400,parser_f返回_read(filepath_or_buffer,文件"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/io/parsers.py",第198行,在_read解析器= TextFileReader(filepath_or_buffer,**kwds)文件"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/io/parsers.py",第479行中在文件"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/io/parsers.py",第586行( init self._make_engine(self.engine) )中,在_make_engine self._engine = CParserWrapper(self.f,**self.options)文件第957行中,在init self._reader = _parser.TextReader(src,**kwds)文件“parser.pyx”中,第477行(熊猫/parser.c:4434)文件"parser.pyx",第599行,在pandas.parser.TextReader._get_header (大熊猫/parser.c:5831) pandas.parser.CParserError: Passed header=0,但文件中只有0行

对我来说,这意味着文件中有某种形式的损坏,快速查看似乎很好,虽然它是一个大文件,而直观地检查每一行并不是一种选择,对熊猫不会打开的csv文件进行故障排除的好策略是什么?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2014-01-16 09:58:07

看上去熊猫把0行作为标题。试着打电话:

代码语言:javascript
复制
df = pd.DataFrame.from_csv(csv_file,header=None)

代码语言:javascript
复制
    df = pd.DataFrame.read_csv(csv_file,header=None)

然而,奇怪的是,文件似乎有零行(即它是空的)。也许这张纸是错的?

票数 0
EN

Stack Overflow用户

发布于 2014-01-16 12:51:46

如果在Linux中打开它,在操作系统中使用head来检查它,然后用awk或sed修复它。如果在windows中,您也可以尝试vim检查并修复它。简而言之,修复Pandas中的文件可能不是最好的方法。您很可能有奇怪的行尾(因为错误消息显示0行),所以需要将文件或cat标题或使用Vim来确定行尾,以便决定如何最好地修复或处理。

票数 0
EN

Stack Overflow用户

发布于 2014-04-12 07:42:13

我像你一样遇到了这个问题:

/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas-0.13.1_601_g4663353-py2.7-macosx-10.9-x86_64.egg/pandas/io/parsers.pyc in init(self,src,self.index_col不是假的971 -> 972 self._reader = _parser.TextReader(src,**kwds) 973 974 # XXX /usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas-0.13.1_601_g4663353-py2.7-macosx-10.9-x86_64.egg/pandas/parser.so in pandas.parser.TextReader.cinit (熊猫/Parser.c:4628) /usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas-0.13.1_601_g4663353-py2.7-macosx-10.9-x86_64.egg/pandas/parser.so in pandas.parser.TextReader._get_header (熊猫/Parser.c:6068) CParserError:传递header=0,但文件中只有0行

我的代码是:

df = pd.read_csv('/Users/steven/Documents/Mywork/Python/sklearn/beer/data')

最后,我发现我犯了一个错误:我向read_csv发送了一个目录路径而不是文件路径。

正确的代码是:

df = pd.read_csv('/Users/steven/Documents/Mywork/Python/sklearn/beer/data/beer_reviews.csv')

它运行的很好。

所以,我认为你的问题的原因在于你发送的文件。也许正如我所做的那样,它是目录的路径。可能该文件为空或损坏,或在错误的编码集。

我希望以上内容对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21155237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档