Python pandas:动态命名加载的 CSV 文件

Posted

技术标签:

【中文标题】Python pandas:动态命名加载的 CSV 文件【英文标题】:Python pandas: dynamically naming loaded CSV files 【发布时间】:2020-10-05 06:26:44 【问题描述】:

我正在从同一目录中读取一系列一致命名的 CSV 文件。我正在寻找加载它们,以便变量名称根据文件名更改,即:

food_list=['apples','oranges','pears']
place_list=['bodega','grocery']

for i in range(0, len(food_list)):
    for j in range(0,len(place_list)):
        grocery=pd.read_csv(str(food_list[i])+'_'+str(place_list[j])+'_train.csv')
        new_name=str(food_list[i])+'_'+str(place_list[j])+'_train'
        train=new_name
        test=pd.read_csv(str(food_list[i])+'_'+str(place_list[j])+'_test.csv')
        new_name=str(food_list[i])+'_'+str(place_list[j])+'_test'
        test=new_name

### Desired output:
apples_bodega_train # is a dataframe
apples_bodega_test # is a dataframe
...
pears_grocery_train # is a dataframe
pears_grocery_test # is a dataframe

### Actual output:
train # pears_grocery_train
test # pears_grocery_test

因此,我显然只是在每次循环迭代中用其他无用的变量名称覆盖加载的 CSV 数据帧名称“train”和“test”,而不是仅仅重命名加载的数据帧。有人能告诉我解决这个问题的明智方法吗?

【问题讨论】:

【参考方案1】:

使用 eval() 函数实际上可以做到这一点,但这绝对不是您想要做的。如何将数据框保存在字典中?像这样:

dataframes = dict()
dataframes[str(food_list[i])+'_'+str(place_list[j])+'_train'] = pd.read_csv(str(food_list[i])+'_'+str(place_list[j])+'_train.csv')
dataframes[str(food_list[i])+'_'+str(place_list[j])+'_test'] = pd.read_csv(str(food_list[i])+'_'+str(place_list[j])+'_test.csv')

【讨论】:

太好了——这让我可以使用以下语法访问每个数据帧:dataframes['apple_bodega_train'] 等等。谢谢!

以上是关于Python pandas:动态命名加载的 CSV 文件的主要内容,如果未能解决你的问题,请参考以下文章

将非常大的 CSV 数据集加载到 Python 和 R 中,Pandas 陷入困境

Python / Pandas:重命名非常大的数据文件的列

Python pandas 保存多个不同名称的 CSV

Pandas 加载数据的方法和技巧

pandas多种格式数据加载

使用 pyodbc 和 pandas 将 CSV 加载到 .mdb