Maison  >  Article  >  développement back-end  >  Comment fusionner des DataFrames sur une colonne tout en préservant les informations du DataFrame principal ?

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

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 09:42:03591parcourir

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>

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>

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!

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