Загрузите несколько zip-файлов из одной папки с паролем в один pandas фрейм данных - PullRequest
0 голосов
/ 05 марта 2020

У меня есть папка, в которой сохранено несколько zip-файлов, например:

Folder path: C:\Users\FolderA
Files in the folder: A.Zip, B.Zip,....,Z.Zip

все эти zip-файлы защищены одним и тем же паролем: lordoftherings

Как загрузить все файлы в этих zip-файлах в один фрейм данных (обратите внимание, что каждый zip-файл содержит ровно один CSV-файл).

Пока я знаю только, как я могу загрузить несколько CSV-файлов . И я знаю, как я могу загрузить zip-файл:

zf = zipfile.ZipFile('C:/...')
dfClearstream = pd.read_csv(zf.open('....csv'), sep=';')

Таким образом, желаемый результат будет один кадр данных в pandas.

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Согласно вашему ответу, пример множественной загрузки CSV и пример открытого файла zip-файла, защищенного паролем , вы можете сделать коды, как показано ниже:

Если у вас есть A .csv в A.zip, B.csv в B.zip, ...

import glob
import pandas as pd
import zipfile

password = b'lordoftherings' # Set password

zipfiles = glob.glob("C:\Users\FolderA\*.zip") # Get list of zip files
zfs = [(zipfile.ZipFile(f), f.split("\\")[-1].split(".")[0] + '.csv') for f in zipfiles]
# Get ZipFile object and csv file name for each zip file

dfs = [pd.read_csv(zf.open(filename, 'r', password), header=None, sep=';') for zf, filename in zfs]
# Unzip zip file with password, read csv files

salesdata = pd.concat(dfs,ignore_index=True)
0 голосов
/ 05 марта 2020

Вы можете создать список с фреймами данных и concat их с помощью:

dfs = []

with zipfile.ZipFile('my_zip.zip') as zf:
    for file in zf.namelist():
        dfs.append(pd.read_csv(zf.open(file), sep=';'))

df = pd.concat(dfs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...