Maison > développement back-end > Tutoriel Python > Comment fusionner des dataframes pour ajouter les valeurs manquantes en fonction d'une colonne correspondante ?

Comment fusionner des dataframes pour ajouter les valeurs manquantes en fonction d'une colonne correspondante ?

Linda Hamilton
Libérer: 2024-10-29 12:50:29
original
298 Les gens l'ont consulté

How to merge dataframes to append missing values based on a matching column?

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
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

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