亲爱的社区,我正在尝试从已经预加载的列表中生成多个数据文件,并使用不同的数据格式names.First存储它们,我将我想要从文件夹中找到的特定excel文件的名称命名为:
list = info.files.dropma() 这些文件将存储我只想从特定文件夹读取的文件列表。
然后,我将倍数excel文件存储到列表("of dataframes")中:
d = []
for f in list:
li = pd.read_excel(f)
d.append(li) 上面,d生成一个包含多个Dataframes的列表。
然后创建一个带有数字的列表,以便将列表中的索引标识为:
list_2 = [i for i in range(0,len(lista)]后来,我调用了一个列表,上面有我想要调用我的新数据格式的名字。
names = info.names在此之后,我使用来自"list_2“和”名称“的信息,以便: i)遍历lis 'd‘(它包含来自不同excel文件的信息)的索引,并将我的新数据标记为:
for i in list_2
for i_2 in names
vars()[i_2] = pd.DataFrame(d[i]) 虽然没有错误,并且循环工作,并生成新的数据格式,但是代码并不以一种精确的方式存储信息。这里的情况是,代码重复列表"d“中的最后信息,然后沿着多个数据存储。
有办法解决这个问题吗?
我会接受任何意见或任何帮助,请。
发布于 2021-12-09 12:53:38
你是否想做以下几件事:
files_list = info.files.dropma()
dfs = [pd.read_excel(f) for f in files_list]
names = info.names
for name, df in zip(names, dfs):
vars()[name] = pd.DataFrame(df)这使用了2个基本Python特性:
zip:除其他外,内置函数zip是用于对多个可迭代性进行同步循环的goto工具(这里有两个列表)。正如阿恩在评论中提到的:
list作为变量名--您正在重写内置类型的名称。vars()与globals()相同,locals()就能工作(print(id(vars()) == id(globals()))应该产生True)。当情况不是这样的时候,它就中断了,因为locals()是只读的--例如在函数定义中。https://stackoverflow.com/questions/70286062
复制相似问题