Pandas 匹配数据帧结构

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


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,但我正在寻找一种通用解决方案,需要在具有许多列的许多数据帧上完成此操作。


至尊宝的传说
浏览 140回答 3
3回答

三国纷争

使用 aligndf2,_=df2.align(df,axis=1)df2Out[190]:    var1  var2  var30     4     5   NaN1     1     7   NaN2     3     7   NaN

慕慕森

尝试使用reindex:df2.reindex(df.columns, axis=1)输出:   var1  var2  var30     4     5   NaN1     1     7   NaN2     3     7   NaN

大话西游666

 for n in (set(df.columns) - set(df2.columns)):     df2[str(n)] = np.NaN
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python