尝试对这两个 Pandas 数据帧进行完整的外部联接:
df1 = pd.DataFrame({'a': [1,2,1], 'b': [1,1,2], 'c': [1,2,3]}).set_index(['a', 'b'])
df2 = pd.DataFrame({'a': [1,2,3], 'd': [11,12,13]}).set_index(['a'])
>>> df1
c
a b
1 1 1
2 1 2
1 2 3
>>> df2
d
a
1 11
2 12
3 13
我继续像这样合并这两个:
>>> df1.merge(df2, how='outer', left_index=True, right_index=True)
c d
a b
1 1 1 11
2 1 2 12
1 2 3 11
虽然我希望在此连接中也应返回不匹配的索引,如下所示:
c d
a b
1 1 1 11
2 1 2 12
3 NaN NaN 13
1 2 4 11
最佳答案
你可以使用一个小技巧 - reset_index
按级别b
、合并
和最后set_index
通过b
:
df2 = df1.reset_index(level='b')
.merge(df2, how='outer', left_index=True, right_index=True)
.set_index('b', append=True)
print (df2)
c d
a b
1 1.0 1.0 11
2.0 3.0 11
2 1.0 2.0 12
3 NaN NaN 13
关于python - Pandas 完整外部索引与 NaN 连接以处理不匹配的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43206026/