我有两个数据框,如下所示:
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>
答案 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