我试图将两个数据帧合并为一个。每个数据框都有一个唯一的列名。行索引在两个数据帧之间可能重叠,但是也有唯一的。
这里是一个例子:
df1 = pd.DataFrame({'ColumnA': [1, 2, 3, 4]}, index=['a', 'b', 'c', 'd'])
df2 = pd.DataFrame({'ColumnB': [5, 6, 7, 8]}, index=['a', 'b', 'e', 'f'])
因此,我期望以下结果:
ColumnA ColumnB
a 1 5
b 2 6
c 3 NaN
d 4 NaN
e NaN 7
f NaN 8
我尝试了以下操作:
df1 = df1.merge(df2, left_index=True, right_index=True)
我也尝试过:
df1 = pd.concat([df1, df2], axis=1, sort=False)
两者都有结果,唯一的行都消失了。
有人可以在这里帮助我吗?谢谢。
IIUC combine_first
或join
df1.combine_first(df2)
ColumnA ColumnB
a 1.0 5.0
b 2.0 6.0
c 3.0 NaN
d 4.0 NaN
e NaN 7.0
f NaN 8.0
或
df1.join(df2,how='outer')
ColumnA ColumnB
a 1.0 5.0
b 2.0 6.0
c 3.0 NaN
d 4.0 NaN
e NaN 7.0
f NaN 8.0
运行:
df1.join(df2, how='outer')