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

时间:2017-10-08 22:01:09

标签: python pandas multi-index

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

换句话说 - 我想做一个" HLOOKUP"在excel中,使用多索引的第一级并查找原始数据帧。

新的多指数是预先确定的。

1 个答案:

答案 0 :(得分:3)

根据评论中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