Maison > développement back-end > Tutoriel Python > Comment fusionner des DataFrames en fonction d'une colonne, en préservant les informations du premier DataFrame ?

Comment fusionner des DataFrames en fonction d'une colonne, en préservant les informations du premier DataFrame ?

Mary-Kate Olsen
Libérer: 2024-10-31 05:17:02
original
1038 Les gens l'ont consulté

How to Merge DataFrames Based on a Column, Preserving the First DataFrame's Information?

Comment fusionner des DataFrames en fonction d'une colonne, en préservant les informations du premier DataFrame

Étant donné deux dataframes avec des lignes qui se chevauchent mais non identiques, vous pouvez les fusionner en fonction d'un élément spécifique colonne pour ajouter des informations de l’une à l’autre. Dans ce cas, vous souhaitez fusionner deux trames de données, df1 et df2, où df1 contient des informations sur l'âge et df2 contient des informations sur le sexe. Voici comment procéder tout en conservant les informations de la première dataframe.

Solution

Pour fusionner les dataframes et conserver les informations de la première dataframe, utilisez la fonction map avec une série créée par set_index :

<code class="python">df1['Sex'] = df1['Name'].map(df2.set_index('Name')['Sex'])</code>
Copier après la connexion

Par exemple :

<code class="python">df1 = pd.DataFrame({'Name': ['Tom', 'Sara', 'Eva', 'Jack', 'Laura'], 
                     'Age': [34, 18, 44, 27, 30], 
                     'Sex': None})

df2 = pd.DataFrame({'Name': ['Tom', 'Paul', 'Eva', 'Jack', 'Michelle'], 
                     'Sex': ['M', 'M', 'F', 'M', 'F']})

df1['Sex'] = df1['Name'].map(df2.set_index('Name')['Sex'])

print(df1)</code>
Copier après la connexion

Sortie :

   Name  Age Sex
0   Tom  34   M
1  Sara  18  NaN
2   Eva  44   F
3  Jack  27   M
4 Laura  30  NaN
Copier après la connexion
Copier après la connexion

Solution alternative

Une autre façon d'obtenir le même résultat consiste à fusionner les dataframes à l'aide d'une jointure gauche :

<code class="python">df = df1.merge(df2[['Name', 'Sex']], on='Name', how='left')</code>
Copier après la connexion

Exemple :

<code class="python">df = df1.merge(df2[['Name', 'Sex']], on='Name', how='left')

print(df)</code>
Copier après la connexion

Sortie :

   Name  Age Sex
0   Tom  34   M
1  Sara  18  NaN
2   Eva  44   F
3  Jack  27   M
4 Laura  30  NaN
Copier après la connexion
Copier après la connexion

Gestion de plusieurs colonnes de jointure

Si vous devez fusionner sur plusieurs colonnes, utilisez la même approche de jointure gauche avec les colonnes de jointure supplémentaires spécifiées :

<code class="python">df = df1.merge(df2[['Name', 'Sex', 'Year', 'Code']], on=['Year', 'Code'], how='left')</code>
Copier après la connexion

Gestion des erreurs : colonnes de jointure en double

Si vous rencontrez une erreur due à une jointure en double colonnes, gérez-le en supprimant les doublons ou en utilisant un dictionnaire pour le mappage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal