J'ai deux blocs de données comme ceux ci-dessous:
df2
var1 var2 var3
0 1 5 NaN
1 2 7 NaN
2 3 7 NaN
et
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
Je veux que df2 ait les mêmes colonnes et colonne ordre comme le df d'origine
pour que les résultats ressemblent à:
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
Je sais que je peux attribuer manuellement une nouvelle colonne dans cet exemple appelé 'var3 'et définissez ses valeurs sur NaN, mais je recherche une solution générale où cela doit être fait sur de nombreux blocs de données avec de nombreuses colonnes.
3 Réponses :
Essayez d'utiliser reindex:
var1 var2 var3 0 4 5 NaN 1 1 7 NaN 2 3 7 NaN
Output:
df2.reindex(df.columns, axis=1)
for n in (set(df.columns) - set(df2.columns)):
df2[str(n)] = np.NaN
Utilisation de 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