【发布时间】:2020-01-30 04:41:02
【问题描述】:
我的搜索无法找到此问题的解决方案。我希望它很简单,只是错过了它。
我正在尝试根据字典键分配数据框变量。我想遍历键 0、1、2 3... 的字典并将数据帧保存为 df_0、df_1、df_2 ...我能够使键和值正常工作并可以分配一个数据帧,但找不到一种基于键分配新数据帧的方法。
我尝试了How to create a new dataframe with every iteration of for loop in Python,但它似乎不起作用。
这是我尝试过的:
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)}
输出:来自 print 语句的 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
已解决感谢 RubenB 将我指向 How do I create a variable number of variables? 并由 @rocky-li 使用 globals() 回答
for keys, docs in docs_dict.items():
print(keys, docs)
globals()['df_{}'.format(keys)] = pd.read_excel(...)}
>> Output: dataframes df_0, df_1, ...
【问题讨论】:
-
为什么不使用
dfs = {},然后使用dfs[key] = ...? -
我将
dfs = {}放在循环之前并将df[keys]更改为dfs[keys]并且运行时没有错误,但没有创建数据框。 %whos DataFrame 输出是:没有变量与您请求的类型匹配。
标签: python python-3.x pandas