使用分层索引DataFrame加入flat index

时间:2014-01-22 22:36:58

标签: python pandas

我有两个数据帧,数据帧A:

               col1 
level1 level2
a      1         1
       2         2
b      1         3
       2         4

和dataframe B:

            col2
level1 
a           5
b           6

我想和他们一起接收:

               col1 col2
level1 level2
a      1         1    5
       2         2    5
b      1         3    6
       2         4    6

简而言之,将单级索引数据框合并到分层索引数据框中。第二级缺失值应填写副本。

1 个答案:

答案 0 :(得分:2)

这对我来说看起来并不常见,我相信他们是直接进行合并的方法,虽然可能不会修改第二帧(制作合并键,例如这有点像交叉合并)。

In [49]: df1 = DataFrame({ 'A' : [1,2,3,4]})

In [50]: df1.index = pd.MultiIndex.from_tuples([ ('a',1),('a',2),('b',1),('b',2) ],names=['l1','l2'])

In [51]: df1
Out[51]: 
       A
l1 l2   
a  1   1
   2   2
b  1   3
   2   4

[4 rows x 1 columns]

In [52]: df2 = DataFrame({ 'B' : [5,6] },index=['a','b'])

In [53]: df2
Out[53]: 
   B
a  5
b  6

[2 rows x 1 columns]

In [54]: x, y = df1.align(df2,level='l1')

In [55]: x.combine_first(y)
Out[55]: 
       A  B
l1 l2      
a  1   1  5
   2   2  5
b  1   3  6
   2   4  6

[4 rows x 2 columns]