熊猫匹配数据框结构

时间:2019-04-09 18:26:12

标签: python pandas dataframe

我有两个数据框,如下所示:

d = {'var1': [1, 2, 3, 4], 'var2': [5, 6, 7, 8], 'var3': [9, 10, 11, 12]}
df = pd.DataFrame(data=d)
df
    var1   var2  var3
0     1     5      9
1     2     6      10
2     3     7      11
3     4     8      12

d2 = {'var1': [4, 1, 3], 'var2': [5, 7, 7]}
df2 = pd.DataFrame(data=d2)
df2
    var1   var2
0     1     5
1     2     7
2     3     7

我希望df2具有与原始df相同的列和列顺序

所以结果如下:

df2
    var1   var2  var3
0     1     5     NaN
1     2     7     NaN
2     3     7     NaN

我知道我可以在此示例中手动分配一个称为'var3'的新列并将其值设置为NaN,但是我正在寻找一种通用解决方案,该操作需要在具有许多列的许多数据帧上完成。 / p>

3 个答案:

答案 0 :(得分:2)

尝试使用reindex

df2.reindex(df.columns, axis=1)

输出:

   var1  var2  var3
0     4     5   NaN
1     1     7   NaN
2     3     7   NaN

答案 1 :(得分:2)

使用align

df2,_=df2.align(df,axis=1)
df2
Out[190]: 
   var1  var2  var3
0     4     5   NaN
1     1     7   NaN
2     3     7   NaN

答案 2 :(得分:0)

 for n in (set(df.columns) - set(df2.columns)):
    df2[str(n)] = np.NaN