基于单个索引创建多级索引

4

我有一个Pandas DataFrame,其中索引看起来类似于这样:

"test1 2011"
"test2 2011"
"test3 2011"
"test1 2012"
"test2 2012"
"test3 2012"
...

有没有简单的方法将这个转换为MultiIndex?

期望输出示例:

                 columns_of_data
"2011" "test1"   N/A
       "test2"   N/A
       "test3"   N/A
"2012" "test1"   N/A
       "test2"   N/A
       "test3"   N/A

你能给一个期望结果的例子吗? - greole
@greole 添加了示例输出 - Jimmy C
1个回答

4
如果您有这个索引:
idx = ["test1 2011",
"test2 2011",
"test3 2011",
"test1 2012",
"test2 2012",
"test3 2012"]

idx = pd.Index(idx)

然后,您可以拆分每个索引值并将其馈送给MultiIndex.from_tuples[::-1]是为了颠倒“test1”和“2013”的顺序,就像您期望的输出一样):

midx = pd.MultiIndex.from_tuples([x.split()[::-1] for x in idx])

例如,这会产生这样的数据框:
In [12]: pd.DataFrame(np.random.randn(6,2), index=midx)
Out[12]:
                   0         1
2011 test1  0.340850  2.295460
     test2  1.201304 -0.546234
     test3 -0.667596  1.114521
2012 test1 -0.116098 -0.494520
     test2  0.663173 -0.834933
     test3  0.709935 -0.195774

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接