Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过多索引级别映射到新的数据帧?_Python_Pandas_Multi Index - Fatal编程技术网

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

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列的数据帧,索引是一个时间序列

我想用相同的索引创建一个新的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   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谢谢您的提问。继续回答:-)完美!!谢谢。这是一个很好的答案。