使用pandas在Python中读取多个pandas数据帧并指定数据帧名称的优雅方式

2024-09-30 12:13:12 发布

您现在位置:Python中文网/ 问答频道 /正文

请原谅我的问题,我知道这是微不足道的,但出于某些原因,我没有得到它的权利。一个接一个地阅读dataframes是非常低效的,特别是如果你有很多dataframes你想从中阅读。记住DRY - DO NOT REPEAT YOURSELF

因此,我的方法如下:

files = ["company.csv", "house.csv", "taxfile.csv", "reliablity.csv", "creditloan.csv", "medicalfunds.csv"]

DataFrameName =  ["company_df", "house_df", "taxfile_df", "reliablity_df", "creditloan_df", "medicalfunds_df"]

for file in files:
    for df in DataFrameName:
        df = pd.read_csv(file)

这只给了我df作为frames中的一个,我不确定是哪一个,但我猜是最后一个。如何通过csv文件read并将它们与数据帧名称一起存储在DataFrameName

我的目标:

将6dataframes加载到工作空间中,间隔为DataFrameName

例如company_df保存来自"company.csv"的数据


Tags: csvindfforreadfilescompanyfile
3条回答

你可以设置

    DataFrameDic =  {"company":[], "house":[], "taxfile":[], "reliablity":[], "creditloan":[], "medicalfunds":[]}

    for key in DataFrameDic:
        DataFrameDic[key] = pd.read_csv(key+'.csv')

这将返回一个包含数据帧的字典

大概是这样的:

files = [
    "company.csv",
    "house.csv",
    "taxfile.csv",
    "reliablity.csv",
    "creditloan.csv",
    "medicalfunds.csv",
]

DataFrameName = [
    "company_df",
    "house_df",
    "taxfile_df",
    "reliablity_df",
    "creditloan_df",
    "medicalfunds_df",
]

dfs = {}

for name, file in zip(DataFrameName, files):
    dfs[name] = pd.read_csv(file)

zip允许您同时迭代两个列表,以便可以同时获取名称和文件名

您将得到一个数据帧的dict

使用pathlib,我们可以创建一个生成器表达式,然后创建一个以文件名为名称、以值为数据帧的字典

使用pathlib,我们可以使用.glob模块获取目标路径中的所有csv

如果您使用的windows使用原始字符串或转义斜杠,请将“\tmp\files”替换为文件的路径

from pathlib import Path
trg_files = (f for f in Path("\tmp\files").glob("*.csv"))

dataframe_dict = {f"{file.stem}_df": pd.read_csv(file) for file in trg_files}

print(dataframe_dict.keys())

'company_df'

print(datarame_dict['company_df'])

相关问题 更多 >

    热门问题