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

时间:2019-03-08 15:16:26

标签: python pandas loops dataframe for-loop

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

...似乎我在使它们是否为字符串之间面临权衡:在循环中使它们成为字符串不允许它们成为数据帧名称(下面的选项1),而使它们不是字符串(我称其为“常规词”)允许它们成为数据框名称,但会使“ read_excel”函数崩溃(下面的选项2)。更多背景知识-我试图将3个excel文件转换为熊猫数据帧(excel文件称为loopdata1.xlsx,loopdata2.xlsx,loopdata3.xlsx)。感谢您的关注!

选项1

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

选项2

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

loopdata1.head()   

1 个答案:

答案 0 :(得分:0)

尽管在探索语言时有一定道理,但还是尝试根据您想要存在的概念进行思考,并在某些时候查看可行的方法(以及您是否希望人们谁可能能够帮助您理解您的语言,这一点需要在提出问题之前提出),您需要退后一步并理解该语言实际使用的概念。

你所说的“普通单词”不是什么。当你说

list2 = [loopdata1, loopdata2, loopdata3]

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

实际上,该列表不保留任何有关其第一个值来自名为loopdata1的变量的信息;它只是保留其值的副本。 (当变量是对象引用或类似引用时,有时看起来好像我刚才所说的不正确;但是确实如此。发生的是,原始变量和list元素都具有相同引用的副本,该引用因此,通过一个引用进行的更改可以通过另一个引用看到,就像变量以某种方式链接在一起;但实际上它们只是同一引用的独立副本。)

没有看到更多代码,我不知道您在“选项2”中实际分配的值。可以是None值,也可以是您将变量(loopdata1loopdata2loopdata3)初始化为的其他值。

现在,您说要使用这些值作为“数据框名称”;从您的代码中,我认为这意味着您要将从loopdata1.xls创建的数据帧分配给名为loopdata1的变量。如果希望由列表中的数据来驱动,则不能完全做到这一点(至少,不是以任何合理的方式);但是你可以做一些非常接近的事情

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