在列表项之后设置熊猫名称

时间:2019-03-22 13:04:15

标签: python-3.x pandas

我有多个带有数据的xlsx文件,我想导入这些文件以在Python中分离数据框。

当前,我想从2014年9月和2014年10月导入电子表格。每年电子表格位于不同的文件夹中,文件名如下在month_list变量中。所需的数据框名称为“ 2014_09_sept_df”和“ 2014_10_okt_df”

month_list = ['09_sept', '10_okt']

df_string_list=[]
k = 0

for i in range(2014,2015):
    dirstring = 'C:/Users/folder/' + str(i)
    os.chdir(dirstring)

    for j in month_list:
        filestring = dirstring + '/' + j + '.xlsx'
        my_file = Path(filestring)            

        if my_file.exists():
            df_string_list.append(str(i) + '_' + j + '_df')
            df_string_list[k] = pd.read_excel(filestring)
            k+=1              

我的问题是我创建了df_string_list列表来保存数据框名称,并且当我想用列表中的该项目命名该数据框时,使用此命令将该数据框放入列表中,而不是创建一个数据框:

df_string_list[k] = pd.read_excel(filestring)

3 个答案:

答案 0 :(得分:0)

如果我对您的理解正确,建议您使用字典而不是列表:

df_string_list={}    #create an empty dict

for i in range(2014,2015):
    dirstring = 'C:/Users/folder/' + str(i)
    os.chdir(dirstring)

    for j in month_list:
        filestring = dirstring + '/' + j + '.xlsx'
        my_file = Path(filestring)            

        if my_file.exists():
            df_string_list[str(i) + '_' + j + '_df'] = pd.read_excel(filestring)

在这种情况下,例如,df_string_list['2014_09_sept_df']包含来自正确文件的数据框。

要了解您的词典中加载的所有数据框名称,请使用:

for dfname in df_string_list.keys():
  print(dfname)
  #print(df_string_list[dfname]    #uncomment to print the desired df

答案 1 :(得分:0)

如果要将列表元素用作数据框名称,则可以在循环结束时执行类似的操作

"getClient": {
      "fname": "Jake",
      "lname": "Finn",
      "sessions": null
    }

答案 2 :(得分:0)

因此,此问题已解决。 :)我不能使用列表项来命名数据框,但是exec函数和.format保存了一天,就像这样:

if my_file.exists():
            exec('{} = pd.DataFrame(pd.read_csv(filestring))'.format(j + '_' + str(i)))

补充说明:我也意识到,数据框名称不能以数字开头。