Python 在数据帧中存储三维数据

Python 在数据帧中存储三维数据,python,pandas,Python,Pandas,我是Python新手,我试图理解如何使用数据帧操作数据。我搜索了类似的问题,但没有发现任何能满足我确切需求的问题。如果这是重复的,请给我指出正确的帖子 因此,我有多个具有完全相同形状、列和索引的数据帧。如何将它们与标签结合起来,以便使用任何列/索引/标签轻松访问数据 例如,在下面的设置之后,我如何将df1和df2放在一个数据帧中,并用名称“df1”和“df2”标记它们,以便我能够以类似df['a']['df1']['b']的方式访问数据,并获得df的行数 >>> import

我是Python新手,我试图理解如何使用数据帧操作数据。我搜索了类似的问题,但没有发现任何能满足我确切需求的问题。如果这是重复的,请给我指出正确的帖子

因此,我有多个具有完全相同形状、列和索引的数据帧。如何将它们与标签结合起来,以便使用任何列/索引/标签轻松访问数据

例如,在下面的设置之后,我如何将df1和df2放在一个数据帧中,并用名称“df1”和“df2”标记它们,以便我能够以类似df['a']['df1']['b']的方式访问数据,并获得df的行数

>>> import numpy as np
>>> import pandas as pd
>>> df1 = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'], index=['a', 'b'])
>>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=['A', 'B'], index=['a', 'b'])
>>> df1
   A  B
a  1  2
b  3  4
>>> df2
   A  B
a  5  6
b  7  8

我认为,
multi-indexdataframe
是由以下内容创建的答案:

然后,对于基本选择,可以使用:

对于“选择索引”和“列”,请使用:


另一个可能的解决方案是使用


但在新版本的熊猫中是如此。

非常感谢!是的,看起来我需要的是多索引数据帧。是否可以将df['A']转换为二维数据帧,其中['A','b']作为索引,['df1','df2']作为列?我认为可以,只添加
axis=1
df=pd.concat([df1,df2],key=('df1','df2'),axis=1)
然后通过
idx=pd.indexlice
打印(df.loc['b',idx['df1','A'])或
df=pd.concat([df1,df2],keys=('df1','df2'))。取消堆栈(0)
?然后
打印(df.xs('A',axis=1))
?@jezrael hi jezrael我正在尝试通过循环连接许多PD来执行相同的操作。我如何正确地连接这些键?我尝试制作一个列表,然后逐渐添加,但返回“不能将不具有相同级别数的索引合并”(这实际上是有道理的)
df = pd.concat([df1, df2], keys=('df1','df2'))
print (df)
       A  B
df1 a  1  2
    b  3  4
df2 a  5  6
    b  7  8
print (df.xs('df1'))
   A  B
a  1  2
b  3  4
idx = pd.IndexSlice
print (df.loc[idx['df1', 'b'], 'A'])
3