我有一个包含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中,使用多索引的第一级并查找原始数据帧。
新的多指数是预先确定的。
答案 0 :(得分:3)
根据评论中cᴏʟᴅsᴘᴇᴇᴅ的建议,您可以将DataFrame.reindex
与columns
和level
参数一起使用:
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