使用Pandas/Python中迭代生成的字符串命名数据帧

使用Pandas/Python中迭代生成的字符串命名数据帧,python,pandas,Python,Pandas,我对Python/Pandas有些陌生,我经常遇到这个我找不到解决方法的特殊用例。我想用迭代生成的名称创建一系列数据帧。这是一个我想在理论上工作的例子 list1_A = DataFrame([(1,3,2),(2,4,5)]) list2_A = DataFrame([(1,5,2),(5,2,3)]) list3_A = DataFrame([(5,2,1),(3,3,6)]) listOfDFs = [list1_A, list2_A, list3_A] for i in range(l

我对Python/Pandas有些陌生,我经常遇到这个我找不到解决方法的特殊用例。我想用迭代生成的名称创建一系列数据帧。这是一个我想在理论上工作的例子

list1_A = DataFrame([(1,3,2),(2,4,5)])
list2_A = DataFrame([(1,5,2),(5,2,3)])
list3_A = DataFrame([(5,2,1),(3,3,6)])

listOfDFs = [list1_A, list2_A, list3_A]
for i in range(len(listofDFs)):
     'list'+str(i)+'A' = 'list'+str(i)+'A' + 5 

我已经尝试了多种方法来解决这个问题,但这是一个不断出现在我面前的用例。在R中,我使用了assign('dfName',value)

利用pandas,从代码末尾开始:

import pandas as pd
allDFs = pd.concat(listOfDFs)
mI = pd.MultiIndex.from_arrays([['list'+i+'A' for i in list('112233')],[0,1]*3],names=['A','B'])
allDFs.index=mI
产生的多索引数据帧:

熊猫可以用多索引数据帧做很多事情:。例如,对任何标准进行切片或选择,并运行测试或操作:

allDFs.xs(0,level='B')[0]==1

你为什么要这样做而不是仅仅使用你的列表?如果键入
list1\u A
而不是
listofds[0]
,您不会真正获得任何东西。在numpy中,我会创建一个三维数组。我认为panda-ish(ailuropodic?)的方法是制作一个层次索引的数据帧,其中迭代生成的名称是外部层次结构中的列标签。此外,这行代码看起来很奇怪,还有一个语法错误:
'list'+str(I)+'a'='list'+str(I)+'a'+5
。你想生产什么?也许您想在DFs上迭代:
对于ListOdfs中的i:i+=5
更改每个DF。在这种情况下,
newDFlist=[x+5对于ListOdfs中的x]
。另外,ListOdfs和ListOdfs中的案例输入错误。感谢BrenBarn-您的解决方案有效。我知道我错过了一些简单的事情。Cphlewis-我只是一个玩具的例子,我想在概念上实现的东西,对不起的打字错误。
allDFs.xs(0,level='B')[0]==1
A
list1A     True
list2A     True
list3A    False