向MultiIndex pandas df添加上级索引

时间:2020-02-16 12:45:01

标签: python python-3.x pandas

如果我有df:

   VLA 
0   40 
1  200 

,然后是一个如下所示的多索引:

                stuff1                         ...  stuff2                    
                   p1            p1       p2  ...       p3       p4       p4
dates                                          ...                              
2019-12-01  596.973988  1268.966237  0.969522  ...  2.344248  1.365735  2.903094
2019-12-02    1.100081     2.338402  1.249667  ...  2.815914  1.387209  2.948740

我将如何创建一个以VLA作为第二个数据帧的上索引的数据帧,如下所示:

VLA                             40            ...              200
                stuff1                         ...  stuff2                    
                   p1            p1       p2  ...       p3       p4       p4
dates                                          ...                              
2019-12-01       596            1268 0.969522  ...  2.344248  1.365735  2.903094
2019-12-02    1.100081     2.338402  1.249667  ...  2.815914  1.387209  2.948740

print (df.columns.levels[0])

Index(['stuff1', 'stuff2', 'stuff3', 'stuff4', 'stuff5', 'stuff6', 'stuff7'], dtype='object')

print (lvl0.map(d)

Float64Index([ 43.0,  43.0,  43.0,  43.0,  43.0,  43.0,  43.0,  43.0, 210.0,
              210.0, 210.0, 210.0, 210.0, 210.0, 210.0, 210.0,   nan,   nan,
                nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,
                nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,
                nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,
                nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,
                nan,   nan],
             dtype='float64')

1 个答案:

答案 0 :(得分:2)

使用Index.get_level_values

mux = pd.MultiIndex.from_tuples([('hh1', '43'),
('hh2', '43'),
('hh3', '43'),
('hh4', '43'),
('hh1', '210'),
('hh2', '210'),
('hh3', '210'),
('hh4', '210')],
)
final2 = pd.DataFrame(columns=mux)

mux = pd.MultiIndex.from_product([final2.columns.get_level_values(0).unique(), ['43', '210']])
print (mux)
MultiIndex([('hh1',  '43'),
            ('hh1', '210'),
            ('hh2',  '43'),
            ('hh2', '210'),
            ('hh3',  '43'),
            ('hh3', '210'),
            ('hh4',  '43'),
            ('hh4', '210')],
           )
相关问题