将两个 pandas DataFrame 与一个唯一的列合并,并保留行索引 (Python)

Combine two pandas DataFrames with one unique column each and keep the row index (Python)

我试图将两个数据帧合并为一个。 每个数据框都有一个唯一的列名。 行索引可能在两个数据帧之间重叠,但也有唯一的。

这是一个例子:

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_firstjoin

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

您尝试了 mergeconcat,但还有另一种方法。

运行:

df1.join(df2, how='outer')

df.merge 有一个参数 how 使用 'outer' 产生期望的结果。

df1.merge(df2, how='outer', left_index=True, right_index=True)

输出:

   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