如何使用Pandas(Python)读取和转换7z文件为csv?

3
我有一些7z文件,想用Pandas将它们转换成csv以预处理数据。我使用Python 2.7。
我尝试了这个方法:
import pandas as pd
data = pd.read_csv('train_2011_2012_2013.7z.002', header = None)
print data

我遇到了这个错误

CParserError                              Traceback (most recent call last)
<ipython-input-9-74098fd0c476> in <module>()
      1 
----> 2 data = pd.read_csv('train_2011_2012_2013.7z.001', header = None)
      3 print data

/root/anaconda2/lib/python2.7/site-packages/pandas/io/parsers.pyc in parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, escapechar, comment, encoding, dialect, tupleize_cols, error_bad_lines, warn_bad_lines, skip_footer, doublequote, delim_whitespace, as_recarray, compact_ints, use_unsigned, low_memory, buffer_lines, memory_map, float_precision)
    560                     skip_blank_lines=skip_blank_lines)
    561 
--> 562         return _read(filepath_or_buffer, kwds)


CParserError: Error tokenizing data. C error: Expected 1 fields in line 17, saw 2

这里有什么问题吗?


pd.read_csv() 可以接受文件句柄或 StringIO。因此,如果您可以打开并读取文件,则可以将其传递给 pandas。 - chrisaycock
它不起作用。 - heisen
数据 = pd.read_csv('train_2011_2012_2013.7z.002', header = None) print 数据 - heisen
这样做行不通,因为你传递的是文件的名称。你需要传递文件的句柄。请参考这个问题了解如何打开文件。 - chrisaycock
需要明确的是,在读取压缩文件时,不能使用文件名。否则(如果读取未压缩的CSV文件),文件名可以作为pandas.read_csv的第一个参数正常使用。 - user554546
压缩和多部分文件!Pandas很好,但仍然有待提高 :) - Jean-François Fabre
1个回答

0

安装pyunpack和patool

pip install pyunpack

pip install patool

之后运行以下代码:

from pyunpack import Archive
Archive('Downloads\asdfg.7z').extractall("output path")

在输出路径中,您将找到提取的文件夹,其中存储了您的文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接