繁体   English   中英

使用pandas读取zip文件中包含的多个文件

[英]reading multiple files contained in a zip file with pandas

我有多个包含不同类型 txt 文件的 zip 文件。 像下面这样:

zip1 
  - file1.txt
  - file2.txt
  - file3.txt

如何使用 Pandas 读取每个文件而不提取它们?

我知道如果它们是每个 zip 1 个文件,我可以使用 read_csv 的压缩方法,如下所示:

df = pd.read_csv(textfile.zip, compression='zip') 

关于如何做到这一点的任何帮助都会很棒。

您可以将ZipFile.open()传递给pandas.read_csv()以从打包成多文件zip的 csv 文件构造一个pandas.DataFrame

代码:

pd.read_csv(zip_file.open('file3.txt'))

将所有.csv读入字典的示例:

from zipfile import ZipFile

zip_file = ZipFile('textfile.zip')
dfs = {text_file.filename: pd.read_csv(zip_file.open(text_file.filename))
       for text_file in zip_file.infolist()
       if text_file.filename.endswith('.csv')}

处理此问题的最简单方法(如果您将一个大 csv 文件的多个部分压缩为一个 zip 文件)。

import pandas as pd
from zipfile import ZipFile

df = pd.concat(
    [pd.read_csv(ZipFile('some.zip').open(i)) for i in ZipFile('some.zip').namelist()],
    ignore_index=True
)

不久前,我对 XML 文件也有类似的问题。 zipfile 模块可以让你到达那里。

from zipfile import ZipFile

z = ZipFile(yourfile)

text_files = z.infolist()

for text_file in text_files:
    z.read(text_file.filename)

如果你想将它们连接成一个 pandas 对象,那么它可能会变得更复杂一些,但这应该会让你开始。 请注意, read方法返回字节,因此您可能也必须处理它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM