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