使用from_tuples创建MultiIndex时,创建的索引对象与输入的元组顺序不同。
我正在尝试使用pd.MultiIndex.from_tuples方法向数据帧添加列级别,但级别与我的预期不同。
df = pd.DataFrame({'x_1':[1, 2], 'x_2':[3, 4], 'x_10':[3, 4], 'y_1':[5, 6], 'y_2':[7, 8], 'y_10':[1, 2]})
df = df.reindex(columns=['x_1', 'x_2', 'x_10', 'y_1', 'y_2', 'y_10'])
index = pd.MultiIndex.from_tuples([tuple(c.split('_')) for c in df.columns])
print(index)
MultiIndex(levels=[['x', 'y'], ['1', '10', '2']],
labels=[[0, 0, 0, 1, 1, 1], [0, 2, 1, 0, 2, 1]])
当我向数据框添加级别并执行堆叠操作时,顺序并不是我想要的。
df.columns = index
df.stack()
x y
0 1 1 5
10 3 1
2 3 7
1 1 2 6
10 4 2
2 4 8
我希望指数水平看起来像这样:
MultiIndex(levels=[['x', 'y'], ['1', '2', '10']])
并且堆叠将会如下所示:
df.stack()
x y
0 1 1 5
2 3 7
10 3 1
1 1 2 6
2 4 8
10 4 2