熊猫多索引和从数据帧列表中堆栈



我有3个列表,比如A,B和C,看起来像这样:

A = ["Jan", "Feb", "Mar"]
B = ["location1", "location2", "location3"]
C = [pd.DataFrame(np.random.randn(2, 3), columns=list('ABC'))]*3

如何创建具有 3 个索引级别的多索引数据帧,即 A、B 和 C 的两个索引(0 到 1(?

到目前为止,我尝试的是通过遍历所有 3 个列表和数据帧列来创建包含所有三个索引的字典,然后,当我必须对数据进行切片时,再次循环使用条件的键。这有效,但似乎效率很低,因为我的字典中有 1000 万个项目。我想知道是否有使用多索引和堆栈的单行 Pandas 语法。我看到了这些文档,但语法我还不清楚。我是否缺少任何其他可以帮助解决此问题的 Pandas 功能?我应该改用数据库吗?

IIUC:
请参阅我在pd.concat上的帖子以获取更多信息
或文档

pd.concat(C, keys=list(zip(A, B)), axis=1)
        Jan                           Feb                           Mar                    
  location1                     location2                     location3                    
          A         B         C         A         B         C         A         B         C
0 -0.519821 -1.820451 -0.645732 -0.519821 -1.820451 -0.645732 -0.519821 -1.820451 -0.645732
1  1.043477 -0.666565 -0.298504  1.043477 -0.666565 -0.298504  1.043477 -0.666565 -0.298504

或者

pd.concat(dict(zip(zip(A, B), C)), axis=1)

最新更新