繁体   English   中英

在for循环中使用python字典读取具有不同名称的多个CSV文件

[英]Reading multiple CSV files with different names using python dictionary in a for loop

我有一个存储在 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 = pd.read_csv("OUTTYPENM.csv")

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

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

这并不能完全回答您的问题,但我认为它可以让您到达类似的地方,而不涉及任何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()

尝试这个:

for key, value in files_dict.items():
    locals()[key] = pd.read_csv(value)

不过不推荐这种方法。 请参阅此处的链接: https : //www.linuxquestions.org/questions/programming-9/python-create-variables-from-dictionary-keys-859776/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM