Python 如何通过多索引级别映射到新的数据帧?
我有一个包含a、B、C、D列的数据帧,索引是一个时间序列 我想用相同的索引创建一个新的dataframe,但在多索引中要有更多的列。A、 B、C、D是多指标的第一级。我希望新数据帧中的每一列根据其多索引级别具有与A、B、C、D相同的值 换句话说,如果我有这样一个数据帧:Python 如何通过多索引级别映射到新的数据帧?,python,pandas,multi-index,Python,Pandas,Multi Index,我有一个包含a、B、C、D列的数据帧,索引是一个时间序列 我想用相同的索引创建一个新的dataframe,但在多索引中要有更多的列。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
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.reindex
与列
和级别
参数一起使用:
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
您是如何确定较低级别中的列数的?较低级别中的列数是预先确定的。换句话说,假设我已经准备好了另一个多索引。你能在这里包括它吗,或者生成它的代码?我相信您需要类似于
reindex
的东西,但除非我们知道如何重新编制索引,否则我们无法给您答案。@DSM谢谢您的提问。继续回答:-)完美!!谢谢。这是一个很好的答案。