Fusionner des DataFrames pour ajouter des valeurs manquantes en fonction d'une colonne correspondante
Dans le scénario donné, l'objectif est de fusionner deux dataframes, df1 et df2, basé sur la colonne Nom. Cependant, le résultat souhaité est de conserver les informations de df1 et de remplir les valeurs manquantes de df2 avec NaN. Le résultat devrait ressembler à :
Name Age Sex 0 Tom 34 M 1 Sara 18 NaN 2 Eva 44 F 3 Jack 27 M 4 Laura 30 NaN
Méthode 1 : Utilisation de la carte par série Créée par set_index
Cette approche consiste à créer une série à partir de df2 en définissant la colonne Nom comme indice. Ensuite, utilisez la méthode map() pour faire correspondre et remplir les valeurs Sex dans df1.
<code class="python">df1['Sex'] = df1['Name'].map(df2.set_index('Name')['Sex']) print(df1)</code>
Méthode 2 : Solution alternative avec fusion à l'aide de la jointure gauche
An une solution alternative consiste à fusionner df1 et df2 en utilisant l'approche de jointure gauche. Cela garantit que toutes les lignes de df1 sont préservées et que les valeurs manquantes de df2 sont remplies avec NaN.
<code class="python">df = df1.merge(df2[['Name', 'Sex']], on='Name', how='left') print(df)</code>
Méthode 3 : mappage par plusieurs colonnes à l'aide de la fusion avec jointure à gauche
Si plusieurs colonnes sont nécessaires pour la fusion (par exemple, Nom et Année, Code), utilisez la fusion avec jointure gauche, en spécifiant les colonnes souhaitées.
<code class="python"># Merge by all columns df = df1.merge(df2, on=['Year', 'Code'], how='left') # Merge by specified columns df = df1.merge(df2[['Year', 'Code', 'Val']], on=['Year', 'Code'], how='left')</code>
Gestion des erreurs avec les clés en double
Dans certains cas, des valeurs de nom en double peuvent exister, entraînant une erreur. Pour résoudre ce problème, envisagez de supprimer les doublons ou d'utiliser un mappage basé sur un dictionnaire pour garantir que la dernière valeur correspondante est sélectionnée.
<code class="python"># Remove duplicates and create a Series for mapping s = df2.drop_duplicates('Name').set_index('Name')['Val'] df1['New'] = df1['Name'].map(s)</code>
En employant l'une de ces méthodes, vous pouvez fusionner efficacement les trames de données, en préservant les informations de la principale. dataframe et remplissage des valeurs manquantes avec NaN.
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!