2 votes

Ajouter uniquement les colonnes correspondantes au cadre de données

J'ai une sorte de cadre de données "principal" auquel j'aimerais ajouter uniquement les colonnes correspondantes d'un autre cadre de données.

df:
  A  B  C
  1  2  3

df_to_append:
  A  B  C  D  E
  6  7  8  9  0

Le problème est que lorsque j'utilise df.append() Il ajoute également les colonnes non correspondantes à df.

df = df.append(df_to_append, ignore_index=True)
Out:
A  B  C   D   E
1  2  3  NaN NaN
6  7  8   9   0

Mais le résultat que je souhaite obtenir est de supprimer les colonnes D et E puisqu'elles ne font pas partie du cadre de données d'origine ? Je dois peut-être utiliser pd.concat ? Je ne pense pas pouvoir utiliser pd.merge puisque je n'ai rien d'unique sur lequel fusionner.

7voto

W-B Points 94428

Utilisation de concat join='inner

pd.concat([df,df_to_append],join='inner')
Out[162]: 
   A  B  C
0  1  2  3
0  6  7  8

2voto

ChuHo Points 827

Il suffit de sélectionner les colonnes communes aux deux df s :

df.append(df_to_append[df.columns], ignore_index=True)

1voto

Eliot K Points 413

Le moyen le plus simple serait d'obtenir la liste des colonnes communes aux deux bases de données en utilisant la méthode suivante df.columns mais si vous ne savez pas que toutes les colonnes d'origine sont incluses dans la base de données de l'UE, vous ne pouvez pas les utiliser. df_to_append alors vous devez trouver l'intersection des deux ensembles :

cols = list(set(df.columns) & set(df_to_append.columns)) 
df.append(df_to_append[cols], ignore_index=True)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X