Python循环使用常规单词(非对象的元素)

问题描述 投票:0回答:1

我试图通过pandas“read_excel”循环一个常规单词的python列表,理想情况下,循环的元素不会被定义为任何类型的python对象。原因是,我需要它们在一个区域中串起来,而在另一个区域中它们可以作为数据帧名称...

...似乎我在使它们成为字符串之间需要权衡:在循环中使用它们不允许它们是数据帧名称(下面的选项1),而不是它们不是字符串(我是什么) '调用'常规字')允许它们成为数据帧名称,但崩溃了“read_excel”函数(下面的选项2)。更多背景 - 我正在尝试将3个excel文件转换为pandas数据帧(excel文件称为loopdata1.xlsx,loopdata2.xlsx,loopdata3.xlsx)。谢谢参观!

Option 1

list1 = ['loopdata1', 'loopdata2', 'loopdata3']
for x in list1:
    x = pd.read_excel(x + '.xlsx')  

Option 2

list2 = [loopdata1, loopdata2, loopdata3]
for x in list2:
    y = str(x)
    x = pd.read_excel(y + '.xlsx')  

loopdata1.head()   
python pandas loops dataframe for-loop
1个回答
0
投票

虽然它有一定道理,但是在探索一种语言时,尝试根据你想要存在的概念进行思考,并在某些时候看看哪些是有效的(如果你想要那些能够帮助你理解你的人,这一点需要在提出问题之前提出)你需要退后一步,理解语言实际使用的概念。

你所谓的“常用词”不是一件事。当你说的时候

list2 = [loopdata1, loopdata2, loopdata3]

这不是loopdata1loopdata2loopdata3这两个词的列表。它是一个列表,其第一个元素具有分配给名为loopdata1的变量的任何值;并且其第二个元素具有分配给名为loopdata2的变量的任何值;等等

事实上,该列表并未保留其第一个值来自名为loopdata1的变量的任何知识;它只保存其值的副本。 (当你的变量是对象引用或类似的时候,它有时看起来好像我刚刚说的那样不是真的;但它是。发生的是,原始变量和列表元素都有相同引用的副本,哪个引用相同的底层对象。通过一个引用所做的更改可以通过另一个引用,就好像变量以某种方式链接;但实际上它们只是相同引用的独立副本。)

在没有看到更多代码的情况下,我无法知道您在“选项2”中实际分配的值。可能是None值,或者您将变量(loopdata1loopdata2loopdata3)初始化为的其他值。

现在你说你想把这些值用作“数据帧名称”;我从你的代码中得到的意思是你想把从loopdata1.xls创建的数据帧分配给一个名为loopdata1的变量。如果你想让它由列表中的数据驱动,你就不能做到这一点(至少,不是以任何合理的方式);但你可以做得很近

dataframes = {}
list1 = ['loopdata1', 'loopdata2', 'loopdata3']
for x in list1:
    dataframes[x] = pd.read_excel(x + '.xlsx')  
© www.soinside.com 2019 - 2024. All rights reserved.