首页 > 解决方案 > 在for循环中使用python字典读取具有不同名称的多个CSV文件

问题描述

我有一个存储在 python 字典中的文件名和文件路径列表。我正在尝试使用 pandas 的 read_csv 读取文件并从字典中分配数据框名称。我可以在运行 for 循环时读取和打印数据帧,但在循环完成后我无法调用数据帧。我可以将所有数据帧附加到一个列表中,但这样我就无法为这些数据帧分配不同的名称,这些名称也存储在字典中。

我检查了各种论坛,但没有一个能解释为什么带有 pd.read_csv 的 for 循环不起作用以及为什么我无法将名称分配给 for 循环中的数据帧以便以后使用它们。

import pandas as pd
files_dict = {"Filter":"OUTTYPENM.csv","previous":"previous.csv"}
for key, value in files_dict.items():
    key = pd.read_csv(value)
Filter.head()

我希望看到 Filter 数据框的前五行,就好像我已经阅读了以下数据框一样。

Filter = pd.read_csv("OUTTYPENM.csv")

所有 csv 文件都在当前工作目录中。

当我运行 for 循环代码并运行 Filter.head() 时,我收到一条错误消息 - NameError: name 'Filter' is not defined

标签: pythonpandasdataframe

解决方案


这并不能完全回答您的问题,但我认为它可以让您到达类似的地方,而不涉及任何exec()locals()电话。

无需创建以字典键命名的变量,您可以只拥有第二个字典,其中键相同,值现在是您读入的 DF。

import pandas as pd
files_dict = {"Filter":"OUTTYPENM.csv","previous":"previous.csv"}
df_dict = {}
for key, value in files_dict.items():
    df_dict[key] = pd.read_csv(value)
df_dict['Filter'].head()

推荐阅读