【问题标题】:Python pandas: dynamically naming loaded CSV filesPython pandas:动态命名加载的 CSV 文件
【发布时间】: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”,而不是仅仅重命名加载的数据帧。有人能告诉我解决这个问题的明智方法吗?

【问题讨论】:

    标签: python pandas csv for-loop file-rename


    【解决方案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'] 等等。谢谢!
    猜你喜欢
    • 2017-06-10
    • 1970-01-01
    • 2019-11-14
    • 2021-12-20
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 2011-10-26
    • 2020-04-11
    相关资源
    最近更新 更多