joh*_*nyb 6 python zip python-3.x pandas
我有多个包含不同类型的txt文件的zip文件.如下所示:
zip1
- file1.txt
- file2.txt
- file3.txt
Run Code Online (Sandbox Code Playgroud)
如何使用pandas读取每个文件而不提取它们?
我知道如果每个zip是1个文件我可以使用read_csv的压缩方法,如下所示:
df = pd.read_csv(textfile.zip, compression='zip')
Run Code Online (Sandbox Code Playgroud)
任何有关如何做到这一点的帮助都会很棒.
Ste*_*uch 15
您可以传递ZipFile.open()
以从包装到多文件中的csv文件pandas.read_csv()
构造一个.pandas.DataFrame
zip
pd.read_csv(zip_file.open('file3.txt'))
Run Code Online (Sandbox Code Playgroud)
.csv
入dict的示例: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')}
Run Code Online (Sandbox Code Playgroud)
处理此问题的最简单方法(如果您将一个大 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
)
Run Code Online (Sandbox Code Playgroud)