Étant donné deux dataframes avec des lignes qui se chevauchent mais non identiques, vous pouvez les fusionner en fonction d'un élément spécifique colonne pour ajouter des informations de l’une à l’autre. Dans ce cas, vous souhaitez fusionner deux trames de données, df1 et df2, où df1 contient des informations sur l'âge et df2 contient des informations sur le sexe. Voici comment procéder tout en conservant les informations de la première dataframe.
Pour fusionner les dataframes et conserver les informations de la première dataframe, utilisez la fonction map avec une série créée par set_index :
<code class="python">df1['Sex'] = df1['Name'].map(df2.set_index('Name')['Sex'])</code>
Par exemple :
<code class="python">df1 = pd.DataFrame({'Name': ['Tom', 'Sara', 'Eva', 'Jack', 'Laura'], 'Age': [34, 18, 44, 27, 30], 'Sex': None}) df2 = pd.DataFrame({'Name': ['Tom', 'Paul', 'Eva', 'Jack', 'Michelle'], 'Sex': ['M', 'M', 'F', 'M', 'F']}) df1['Sex'] = df1['Name'].map(df2.set_index('Name')['Sex']) print(df1)</code>
Sortie :
Name Age Sex 0 Tom 34 M 1 Sara 18 NaN 2 Eva 44 F 3 Jack 27 M 4 Laura 30 NaN
Une autre façon d'obtenir le même résultat consiste à fusionner les dataframes à l'aide d'une jointure gauche :
<code class="python">df = df1.merge(df2[['Name', 'Sex']], on='Name', how='left')</code>
Exemple :
<code class="python">df = df1.merge(df2[['Name', 'Sex']], on='Name', how='left') print(df)</code>
Sortie :
Name Age Sex 0 Tom 34 M 1 Sara 18 NaN 2 Eva 44 F 3 Jack 27 M 4 Laura 30 NaN
Si vous devez fusionner sur plusieurs colonnes, utilisez la même approche de jointure gauche avec les colonnes de jointure supplémentaires spécifiées :
<code class="python">df = df1.merge(df2[['Name', 'Sex', 'Year', 'Code']], on=['Year', 'Code'], how='left')</code>
Si vous rencontrez une erreur due à une jointure en double colonnes, gérez-le en supprimant les doublons ou en utilisant un dictionnaire pour 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!