我有一堆csv文件,我在Pandas中加载就好了,但是一个文件正在起作用我正在这样打开它:
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中 return _read(filepath_or_buffer,kwds)文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/io/parsers.py”, 第198行,在_read中 parser = TextFileReader(filepath_or_buffer,** kwds)文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/io/parsers.py”, 第479行,在 init 中 self._make_engine(self.engine)文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/io/parsers.py”, 第586行,在_make_engine中 self._engine = CParserWrapper(self.f,** self.options)文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/io/parsers.py”, 第957行, init self._reader = _parser.TextReader(src,** kwds)文件“parser.pyx”,第477行,在pandas.parser.TextReader中。 cinit (pandas / parser.c:4434)文件“parser.pyx”,第599行,in pandas.parser.TextReader._get_header(pandas / parser.c:5831) pandas.parser.CParserError:传递头= 0但文件中只有0行
对我而言,这意味着文件中存在某种损坏,快速查看似乎很好,但它是一个大文件,并且可视化检查每一行不是一个选项,什么是一个好的策略解决psas无法打开的csv文件?
谢谢
答案 0 :(得分:0)
看起来pandas将第0行指定为标题。试着打电话:
df = pd.DataFrame.from_csv(csv_file,header=None)
或
df = pd.DataFrame.read_csv(csv_file,header=None)
然而,奇怪的是文件似乎有零行(即它是空的)。也许文件路径错了?
答案 1 :(得分:0)
如果在Linux中打开它在操作系统中检查它然后用awk或sed修复它...如果在Windows中,你也可以尝试vim来检查和修复它。简而言之,在Pandas中修复文件可能不是最好的。您很可能有奇数行结尾(因为错误消息显示为0行),因此需要标题文件或猫或使用Vim来确定行结尾,以便您可以决定如何最好地修复或处理。
答案 2 :(得分:0)
我遇到了像你这样的问题:
/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- init 中的x86_64.egg / pandas / io / parsers.pyc(self,src,** kwds) 970 kwds [' allow_leading_cols'] = 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- pandas.parser.TextReader中的x86_64.egg / pandas / parser.so。 cinit (pandas / 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- pandas.parser.TextReader._get_header中的x86_64.egg / pandas / parser.so(pandas / parser.c:6068)()
CParserError:传递的标头= 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')
它运行正确。
所以,我认为你的问题的原因在于你发送的文件。也许就像我一样,它是目录的路径。可能该文件为空或已损坏,或者编码设置错误。
我希望以上内容对您有所帮助。