读取 zip 中的所有 csv 文件,并将相应的 csv 文件名作为数据帧变量名

Posted

技术标签:

【中文标题】读取 zip 中的所有 csv 文件,并将相应的 csv 文件名作为数据帧变量名【英文标题】:Read all csv files in a zip with respective csv filenames as dataframe variable names 【发布时间】:2021-04-08 18:45:21 【问题描述】:

我需要从 zip 文件夹中读取所有 CSV 文件,将每个文件读入单独的数据框,并且数据框名称与 CSV 文件的名称相同。以下是我到目前为止所做的,我很难将文件读取分配给文件名。非常感谢任何帮助!

import os
import zipfile

csvNameList = []
with zipfile.ZipFile('../data/999915.zip') as z:
    for filename in z.namelist():
        csvNameList.append(filename.split(".")[1])
        df_name = filename.split(".")[1]
        df_name = pd.read_csv(z.open(filename),
                              header=None, 
                              sep='\|\|@@##', 
                              na_values='\\N')

我希望能够将 CSV 引用为存储在 csvNameList 变量中的名称的数据框。

【问题讨论】:

您可能需要dictd 来存储这些,其中键为filename.split(".")[1],值为df,由pd.read_csv 调用产生,允许您访问d['your_filename'] 的 DataFrame 我想我差不多了,谢谢你建议字典方法,它对我有用! 【参考方案1】:

这将创建一个数据框字典:

with zipfile.ZipFile('../data/999915.zip') as z:
    dataframes = filename.split(".")[1]: pd.read_csv(z.open(filename),header=None,sep='\|\|@@##',na_values='\\N') for filename in z.namelist()

【讨论】:

嘿,谢谢,字典方法奏效了。我只需将“encoding='utf8'”参数添加到字典的值侧,如果我要从 zip 加载单个文件,我不需要它。

以上是关于读取 zip 中的所有 csv 文件,并将相应的 csv 文件名作为数据帧变量名的主要内容,如果未能解决你的问题,请参考以下文章

如何读取多个 zip 文件中的所有 csv 文件?

如何从 csv 文件中读取数据并将其存储在数据库中?弹簧靴

如何使用 python 从位于同一目录中的多个 zip 文件夹中读取 csv 文件?

如何使用 spark(python)读取 zip 文件中的 CSV 文件的内容 [重复]

从 Python3 中的 .zip 文件中提取和读取 [重复]

如何提取多个 zip 文件并在 R 中读取这些 csv? [复制]