我有多个带有数据的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)
答案 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)))
补充说明:我也意识到,数据框名称不能以数字开头。