Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:将WinZipped csv文件转换为数据帧_Python_Pandas - Fatal编程技术网

Python 熊猫:将WinZipped csv文件转换为数据帧

Python 熊猫:将WinZipped csv文件转换为数据帧,python,pandas,Python,Pandas,我有两个WinZipped csv文件,希望将它们作为数据帧读入。问题是两个解压缩选项(“gzip”或“bz2”)似乎都不起作用。以下是该文件的外观: 00000000011!00023011!89011!200812 00000000012!00023011!89011!200812 00000000013!00023011!89011!200812 因此,我似乎必须使用Python的zipfile模块解压文件,读入行并根据读入的内容创建数据帧。我的想法是创建一个字典列表,如下所示: [

我有两个WinZipped csv文件,希望将它们作为数据帧读入。问题是两个解压缩选项(“gzip”或“bz2”)似乎都不起作用。以下是该文件的外观:

00000000011!00023011!89011!200812
00000000012!00023011!89011!200812
00000000013!00023011!89011!200812
因此,我似乎必须使用Python的zipfile模块解压文件,读入行并根据读入的内容创建数据帧。我的想法是创建一个字典列表,如下所示:

[
    {"header1": 00000000011, "header2": 00023011, "header3": 89011, "header4": 200812}, 
    {"header1": 00000000012, "header2": 00023011, "header3": 89011, "header4": 200812},
    ...
]
然后将其转换为数据帧,如中所示


然而,这似乎涉及到大量的行的手动操作-有没有更好的方法来做到这一点?

您只需要解压缩文件:

with zipfile.ZipFile('/path/to/file', 'r') as z:
    f = z.open('member.csv')
    table = pd.io.parsers.read_table(f, ...)

read\u表的
filepath\u或\u buffer
参数接受任何类似文件的参数。

<0.18.1添加了现成的Zip支持:

df = pd.read_csv('my_zipped_csv.zip', compression = 'zip')
事实上,由于默认参数是
compression='infere'
,因此您可以抛出任何带有
.zip
扩展名的内容,它就会知道该做什么:

df = pd.read_csv('my_zipped_csv.zip')

谢谢。我一直在尝试看看这是否有效,问题是
zipfile.zipfile('/path/to/file','r')
中的归档文件包含多个文件。知道我如何提供归档文件中某个文件的路径吗?FWIW我需要做:zipfile.zipfile('path/to/file'.'r'),而不是解决方案中指定的第1行