问题描述
我有一个包含许多zip文件的文件夹,并且在这些zip文件中有多个csv文件。 有什么办法可以在python的一个数据帧中获取所有.csv文件吗? 还是可以通过任何方式传递zip文件列表?
我当前正在尝试的代码是:
import glob
import zipfile
import pandas as pd
for zip_file in glob.glob(r"C:\Users\harsh\Desktop\Temp\data_00-01.zip"):
# This is just one file. There are multiple zip files in the folder
zf = zipfile.ZipFile(zip_file)
dfs = [pd.read_csv(zf.open(f),header=None,sep=";",encoding='latin1') for f in zf.namelist()]
df = pd.concat(dfs,ignore_index=True)
print(df)
此代码适用于一个zip文件,但是我的文件夹中大约有50个zip文件,我想在一个数据帧中读取并连接这些zip文件中的所有csv文件。
谢谢
解决方法
以下代码应满足您的要求(只需根据需要编辑dir_name
):
import glob
import zipfile
import pandas as pd
dfs = []
for filename in os.listdir(dir_name):
if filename.endswith('.zip'):
zip_file = os.path.join(dir_name,filename)
zf = zipfile.ZipFile(zip_file)
dfs += [pd.read_csv(zf.open(f),header=None,sep=";",encoding='latin1') for f in zf.namelist()]
df = pd.concat(dfs,ignore_index=True)