Python 熊猫:将WinZipped csv文件转换为数据帧
我有两个WinZipped csv文件,希望将它们作为数据帧读入。问题是两个解压缩选项(“gzip”或“bz2”)似乎都不起作用。以下是该文件的外观: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模块解压文件,读入行并根据读入的内容创建数据帧。我的想法是创建一个字典列表,如下所示: [
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行