如何按多索引级别映射到新数据框?

How can I map to a new dataframe by Multi Index level?

我有一个包含 A、B、C、D 列的数据框,索引是一个时间序列。

我想创建一个具有相同索引的新数据框,但多索引中有更多列。 A、B、C、D为多指标的第一级。根据其多索引级别,我希望新数据框中的每一列都具有与 A、B、C、D 相同的值。

换句话说,如果我有这样的数据框:

    A   B   C   D
0   2   3   4   5
1   X   Y   Z   1

我想制作一个如下所示的新数据框

    A          B        C   D
    0   1   2   3   4   5   6   7
0   2   2   2   3   3   4   5   5
1   X   X   X   Y   Y   Z   1   1

换句话说 - 我想在 excel 中执行相当于 "HLOOKUP" 的操作,使用多索引的第一级并查找原始数据帧。

新的多索引是预先确定的。

正如 cᴏʟᴅsᴘᴇᴇᴅ 在评论中所建议的,您可以将 DataFrame.reindexcolumnslevel 参数一起使用:

In [35]: mi
Out[35]: 
MultiIndex(levels=[['A', 'B', 'C', 'D'], ['0', '1', '2', '3', '4', '5', '6', '7']],
           labels=[[0, 0, 0, 1, 1, 2, 3, 3], [0, 1, 2, 3, 4, 5, 6, 7]])

In [36]: df
Out[36]: 
   A  B  C  D
0  2  3  4  5
1  X  Y  Z  1

In [37]: df.reindex(columns=mi, level=0)
Out[37]: 
   A        B     C  D   
   0  1  2  3  4  5  6  7
0  2  2  2  3  3  4  5  5
1  X  X  X  Y  Y  Z  1  1