Python 从一组单独的序列构造一个多索引数据帧

Python 从一组单独的序列构造一个多索引数据帧,python,pandas,multi-index,Python,Pandas,Multi Index,我计算了一组有共同指数的熊猫系列。我想用它们构建一个熊猫多索引框架。下面是我想要的结构 X Y Z DATE 2018-01-01 A NaN NaN NaN B NaN NaN

我计算了一组有共同指数的熊猫系列。我想用它们构建一个熊猫多索引框架。下面是我想要的结构

                        X         Y         Z       
DATE                                                      
2018-01-01 A           NaN       NaN       NaN      
           B           NaN       NaN       NaN      
           C           NaN       NaN       NaN      
2018-01-02 A           NaN       NaN       NaN       
           B           NaN       NaN       NaN      
           C           NaN       NaN       NaN       
所以(:,A,X)将是一个系列。另一个等等。我该怎么做呢

下面是我所拥有的

import pandas as pd
import numpy as np
idx = pd.date_range("20180101", periods=10)
s_1 = pd.Series(np.random.randint(0,10,size=10), index=idx)
s_2 = pd.Series(np.random.randint(0,10,size=10), index=idx)
s_3 = .... all the way to s9

编辑:假设我想将s_1映射到(A,X),s_2映射到(A,Y),s_3映射到(A,Z),s_4映射到(B,X),等等。

您需要首先向您提供的
系列添加一些信息,即它们所属的列和多索引级别:

def add_idx_and_name(s, idx_name, col_name):
    #Create multi-index DataFrames from s
    s = s.reset_index()
    s['idx'] = idx_name
    s = s.set_index(['index', 'idx'])
    s.rename(columns={0: col_name}, inplace=True)

    return s
然后将此信息添加到您的系列中(它们现在是
DataFrame
s):

然后连接

pd.concat([pd.concat([s_1, s_2, s_3], axis=1), 
           pd.concat([s_4, s_5, s_6], axis=1),
           pd.concat([s_7, s_8, s_9], axis=1)]).sort_index()
输出(我使用了
np.random.seed(123)


您的
多索引
来自哪里?
pd.concat([pd.concat([s_1, s_2, s_3], axis=1), 
           pd.concat([s_4, s_5, s_6], axis=1),
           pd.concat([s_7, s_8, s_9], axis=1)]).sort_index()
                X  Y  Z
index      idx         
2018-01-01 A    2  9  7
           B    9  3  0
           C    2  0  2
2018-01-02 A    2  0  3
           B    3  5  6
           C    4  8  3
2018-01-03 A    6  0  2
           B    4  0  4
           C    8  1  3
...