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

新手上路,请多包涵

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

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

如何在不解压缩的情况下使用 pandas 读取每个文件?

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

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

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

原文由 johnnyb 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.3k
2 个回答

You can pass ZipFile.open() to pandas.read_csv() to construct a pandas.DataFrame from a csv-file packed into a multi-file zip .

代码:

 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')}

原文由 Stephen Rauch 发布,翻译遵循 CC BY-SA 3.0 许可协议

处理此问题的最简单方法(如果您将一个大 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
)

原文由 valentinmk 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题