我有一个数据框,其中包含两个MultiIndexes(在我理解的“宽格式”中),我想将其重塑,使第二个索引成为一个新列(我理解的是“长格式”)。 有没有简单的方法可以做到这一点?
现在的数据框如下:
A = pd.DataFrame([[1, 2], [1, 2], [1, 2], [1, 2], [1, 2]],
columns=['h', 'k'], index=[1, 2, 3, 4, 5])
B = pd.DataFrame([[3, 4], [3, 4], [3, 4], [3, 4], [3, 4]],
columns=['h', 'k'], index=[1, 2, 3, 4, 5])
C = pd.DataFrame([[5, 6], [5, 6], [5, 6], [5, 6], [5, 6]],
columns=['h', 'k'], index=[1, 2, 3, 4, 5])
A.columns = pd.MultiIndex.from_product([['A'], A.columns])
B.columns = pd.MultiIndex.from_product([['B'], B.columns])
C.columns = pd.MultiIndex.from_product([['C'], C.columns])
ABC = pd.concat([A, B, C], axis = 1)
A B C
h k h k h k
1 1 2 3 4 5 6
2 1 2 3 4 5 6
3 1 2 3 4 5 6
4 1 2 3 4 5 6
5 1 2 3 4 5 6
我想要实现的是:
A B C new_col
1 1 3 5 h
2 1 3 5 h
3 1 3 5 h
4 1 3 5 h
5 1 3 5 h
1 2 4 6 k
2 2 4 6 k
3 2 4 6 k
4 2 4 6 k
5 2 4 6 k
我希望能够直接在数据框上进行操作,而不需要将其转换为其他对象(例如numpy数组),以避免性能下降。请注意保留HTML标签。