我有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)