基于单个索引创建多索引

时间:2014-01-12 10:17:03

标签: python pandas

我有一个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

1 个答案:

答案 0 :(得分:3)

如果你有这个索引:

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