Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何基于循环中的字典键分配dataframe变量_Python_Python 3.x_Pandas - Fatal编程技术网

Python 如何基于循环中的字典键分配dataframe变量

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():

我的搜索无法找到此问题的解决方案。我希望它很简单,只是错过了它

我正在尝试根据字典键分配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():
    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()}