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!