Comment fusionner des DataFrames sur une colonne tout en préservant les informations du DataFrame principal ?

Patricia Arquette
Libérer: 2024-10-30 09:42:03
original
651 Les gens l'ont consulté

How to Merge DataFrames on a Column While Preserving Information from the Primary DataFrame?

Fusionner des DataFrames sur une colonne tout en préservant les informations

Lorsque vous travaillez avec des données en Python à l'aide de Pandas, la fusion de dataframes basées sur des colonnes communes est une pratique courante tâche. Cependant, il est parfois nécessaire de conserver les informations des deux trames de données, en particulier lorsqu'elles contiennent des données qui se chevauchent mais sont incomplètes. Cet article explore une solution pour fusionner des dataframes sur une colonne tout en garantissant que les informations du dataframe principal sont préservées.

Énoncé du problème

Considérons deux dataframes, df1 et df2. df1 contient des informations sur l'âge des individus, tandis que df2 contient leur sexe. Le but est de fusionner df1 et df2 sur la colonne 'Nom', mais de conserver uniquement les informations de df1. Les individus peuvent ne pas toujours être présents dans les deux dataframes.

Solution

Pour y parvenir, nous pouvons utiliser la méthode map() de la série créée en définissant l'index de une dataframe à la colonne sur laquelle nous voulons fusionner. La méthode map() nous permet d'appliquer une fonction de mappage, qui dans ce cas sera une recherche dans l'autre dataframe.

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

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

# Set the index of df2 to Name
df2.set_index('Name', inplace=True)

# Perform the lookup using map
df1['Sex'] = df1['Name'].map(df2['Sex'])

# Display the merged dataframe
print(df1)</code>
Copier après la connexion

Solution alternative : Left Join

Alternativement, nous pouvons utiliser une fusion avec une jointure gauche, qui garantit que toutes les lignes de df1 sont incluses dans le dataframe fusionné, même s'il n'y a pas de ligne correspondante dans df2.

<code class="python"># Perform the left join
df3 = df1.merge(df2, on='Name', how='left')

# Display the merged dataframe
print(df3)</code>
Copier après la connexion

Remarque : Si les cadres de données contiennent plusieurs colonnes à fusionner, utilisez merge(on=['Year', 'Code'], how='left') ou spécifiez les colonnes après la fusion de gauche (par exemple, df1.merge( df2[['Year', 'Code', 'Val']], on=['Year', 'Code'], how='left')).

Gestion des doublons

Si les colonnes utilisées pour la fusion ont des doublons, il est important de gérer les valeurs en double pour éviter toute ambiguïté. Cela peut être fait en utilisant drop_duplicates() ou en utilisant un dictionnaire pour spécifier 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