我有两个数据帧,数据帧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
简而言之,将单级索引数据框合并到分层索引数据框中。第二级缺失值应填写副本。
答案 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]