Fusionner deux cadres de données pandas python de longueur différente, mais conserver toutes les lignes dans le cadre de données de sortie
J'ai le problème suivant: j'ai deux pandas trames de données de longueur différente contenant des lignes et des colonnes qui ont des valeurs communes et d'autres qui sont différents, comme ceci:
df1: df2:
Column1 Column2 Column3 ColumnA ColumnB ColumnC
0 a x x 0 c y y
1 c x x 1 e z z
2 e x x 2 a s s
3 d x x 3 d f f
4 h x x
5 k x x
Ce que je veux faire maintenant, c'est la fusion des deux dataframes de sorte que si ColumnA et Colonne1 ont la même valeur les lignes de df2 sont ajoutées à la ligne correspondante dans df1, comme ceci:
df1:
Column1 Column2 Column3 ColumnB ColumnC
0 a x x s s
1 c x x y y
2 e x x z z
3 d x x f f
4 h x x NaN NaN
5 k x x NaN NaN
Je sais que la fusion est faisable par le biais de df1.merge(df2,left_on='Column1', right_on='ColumnA')
mais cette commande supprime toutes les lignes qui ne sont pas les mêmes dans Colonne1 et ColumnA dans les deux fichiers. Au lieu de cela, j'ai envie de garder ces lignes dans df1 et seulement affecter NaN dans les colonnes où d'autres lignes ont une valeur de df2, comme indiqué ci-dessus. Est-il un moyen souple pour ce faire, dans les pandas?
Merci d'avance!
source d'informationauteur sequence_hard
Vous devez vous connecter pour publier un commentaire.
Vous pouvez lire la documentation ici: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html
Ce que vous cherchez est un left join. L'option par défaut est une jointure interne. Vous pouvez modifier ce comportement par le passage d'une autre façon argument:
Dirait que vous êtes à la recherche de quelque chose comme de gauche de la rejoindre. Voir si cet exemple permet de: http://pandas.pydata.org/pandas-docs/stable/comparison_with_sql.html#left-outer-join
Vous pouvez vous passer d'un paramètre à
merge()
appeléhow='left'
Vous pouvez simplement utiliser de fusion avec l'aide de sur et liste ainsi
Pour plus d'informations, suivre
lien