我有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万个项目。我想知道是否有使用multiindex和stack的单线程Pandas语法。我看到了这些文档,但语法还不清楚。我错过了任何其他可以帮助解决此问题的Pandas功能吗?我应该使用数据库吗?
答案 0 :(得分:2)
IIUC:
See my post on pd.concat
for more information
Or the documentation
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)