合并两个具有不同列数和顺序的数据框 (pandas)

Merging two dataframes with different number & order of columns (pandas)

我在 pandas 中合并两个具有不同列(一些公共列,但数量不同)的数据框时遇到问题。这些公共列的顺序是不一样的。例如:

df1
   A B C                                                     
R1 1 2 3
R2 2 1 2
R3 1 1 1

df2
   B C                                                 
R1 2 1
R2 1 1

我想要的结果是:

df1
   A B C                                                     
R1 1 2 3
R2 2 1 2
R3 1 1 1
R4 N 2 1
R5 N 1 1

(N = NULL)

有很多列 (>100),所以我不想手动输入列名。我该怎么做?

首先,将df2的索引更新为与df1的索引连续:

df2.index = ['R' + str(i + 1) for i in range(len(df1), len(df1) + len(df2))]

现在,我们可以使用 concat 连接列名后面的两个数据帧:

pd.concat([df1, df2])

结果:

      A  B  C
R1  1.0  2  3
R2  2.0  1  2
R3  1.0  1  1
R4  NaN  2  1
R5  NaN  1  1