通过映射将数据框与多级列合并

时间:2018-08-06 06:42:05

标签: python dataframe

A1 = pd.DataFrame({'value':[1,0],'price':[1,9]},index= ['2000/01/01','2000/01/03'] )
A2 = pd.DataFrame({'value':[1,0], 'price':[3,6]}, index =  ['2000/01/02','2000/01/03'])

B1 = pd.DataFrame({'value':[1,0],'price':[2,3]},index= ['2000/01/01','2000/01/03'] )
B2 = pd.DataFrame({'value':[1,0], 'price':[3,9]}, index =  ['2000/01/02','2000/01/03'])
  All_df =  pd.concat([A1, A2, B1,B2],axis=1,keys = ['A1','A2','B1','B2'])

All_df
              A1          A2          B1          B2      
           price value price value price value price value
2000/01/01   1.0   1.0   NaN   NaN   2.0   1.0   NaN   NaN
2000/01/02   NaN   NaN   3.0   1.0   NaN   NaN   3.0   1.0
2000/01/03   9.0   0.0   6.0   0.0   3.0   0.0   9.0   0.0

我有一个数据框,如上All_df。 也有另一个数据框AB

AB =  pd.DataFrame({ 'A':[6,3,3],'B':[3,2,1]},index =  ['2000/01/01','2001/01/02','2000/01/03'])
AB
                  A        B
2000/01/01        6        3
2001/01/02        3        2
2000/01/03        3        1

另外,我有一个映射字典。

mydict = {'A':['A1','A2'],'B':['B1','B2']}

dict告诉A1和A2与A有关,B1和B2与B有关。 根据这种关系,我想像下面那样合并All_df和AB。

               A                      |  B
              A1          A2        A |  B1           B2         B
           price value price value  A |  price value price value B 
2000/01/01   1.0   1.0   NaN   NaN  6 |    2.0   1.0   NaN   NaN 3
2000/01/02   NaN   NaN   3.0   1.0  3 |    NaN   NaN   3.0   1.0 2
2000/01/03   9.0   0.0   6.0   0.0  3 |    3.0   0.0   9.0   0.0 1

我该如何实现?请注意,合并数据框中的A和B列名称不是强制性的,可以是您想要的任何字符串。

0 个答案:

没有答案