Python 如何基于循环中的字典键分配dataframe变量
我的搜索无法找到此问题的解决方案。我希望它很简单,只是错过了它 我正在尝试根据字典键分配dataframe变量。我想循环浏览包含键0、1、2和3的字典。。。并将数据帧保存为df_0、df_1、df_2。。。我能够让键和值正常工作,并且可以分配一个数据帧,但无法找到基于键分配新数据帧的方法 我试过了,但似乎不起作用 以下是我尝试过的:Python 如何基于循环中的字典键分配dataframe变量,python,python-3.x,pandas,Python,Python 3.x,Pandas,我的搜索无法找到此问题的解决方案。我希望它很简单,只是错过了它 我正在尝试根据字典键分配dataframe变量。我想循环浏览包含键0、1、2和3的字典。。。并将数据帧保存为df_0、df_1、df_2。。。我能够让键和值正常工作,并且可以分配一个数据帧,但无法找到基于键分配新数据帧的方法 我试过了,但似乎不起作用 以下是我尝试过的: docs_dict = {0: '2635_base', 1: '2635_tri'} for keys, docs in docs_dict.items():
docs_dict = {0: '2635_base', 1: '2635_tri'}
for keys, docs in docs_dict.items():
print(keys, docs)
df = pd.read_excel(Path(folder_loc[docs]) / file_name[docs], sheet_name=sheet_name[docs], skiprows=3)}
输出:打印语句的0 2635_base 1 2635_tri和%whos DataFrame>df除外
我想得到的是:df_0和df_1基于其他字典中的excel文件,它们工作正常
df[keys] = pd.read_excel(Path(folder_loc[docs]) / file_name[docs], sheet_name=sheet_name[docs], skiprows=3)
生成ValueError:传递的项数错误26,放置意味着1
已解决感谢鲁本布使用globals()
您可能希望尝试这样的dict理解(用从光盘读取数据帧所需的任何内容替换
pd.read\u excel(…docs…
):
为什么不使用
dfs={}
然后使用dfs[key]=…
?我将dfs={}
放在循环之前,并将df[key]
更改为dfs[keys]
,运行时没有错误,但没有创建数据帧谁的数据帧输出是:没有变量与您请求的类型匹配。感谢@RubenB,我能够理解dict,但我不确定如何自动获取数据帧df_0=dfs_dict[0]和df_1=dfs_dict[1],而无需硬编码。我需要df_0、df_1和df_x,这取决于具体情况,以便我可以运行合并和列检查。基本上,我希望每个读取的excel文件都有一个单独的df。是否要动态创建变量?这通常是不好的做法,对于合并和列检查来说不是必需的。看看你为什么不应该这样做。您最好使用数据帧在iterable上循环,并对它们单独执行任何操作。在合并过程中,请查看您将如何使用iterable.Bingo进行合并。答案是RockyLi使用globals()['df_{}'。格式(键)]=。我没有足够的声誉,所以我无法对你的答案投赞成票。希望有人能代表我。
for keys, docs in docs_dict.items():
print(keys, docs)
globals()['df_{}'.format(keys)] = pd.read_excel(...)}
>> Output: dataframes df_0, df_1, ...
docs_dict = {0: '2635_base', 1: '2635_tri'}
dfs_dict = {k: pd.read_excel(...docs...) for k, docs in docs_dict.items()}