Maison  >  Article  >  développement back-end  >  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
Mary-Kate Olsenoriginal
2024-10-31 05:17:02917parcourir

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>

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>

Sortie :

   Name  Age Sex
0   Tom  34   M
1  Sara  18  NaN
2   Eva  44   F
3  Jack  27   M
4 Laura  30  NaN

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>

Exemple :

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

print(df)</code>

Sortie :

   Name  Age Sex
0   Tom  34   M
1  Sara  18  NaN
2   Eva  44   F
3  Jack  27   M
4 Laura  30  NaN

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>

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!

Déclaration:
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