Pandas : mettre à jour les valeurs des colonnes en fonction d’un autre DataFrame



Souvent, vous souhaiterez peut-être mettre à jour les valeurs d’une colonne d’un DataFrame pandas en utilisant les valeurs d’un autre DataFrame.

Heureusement, cela est facile à faire en utilisant la fonction merge() dans pandas.

L’exemple suivant montre comment procéder.

Exemple : mettre à jour les valeurs de colonne dans Pandas DataFrame en fonction d’un autre DataFrame

Supposons que nous ayons le DataFrame pandas suivant qui contient des informations sur divers joueurs de basket-ball :

import pandas as pd

#create DataFrame
df1 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
                    'points': [18, 22, 19, 14, 14, 11, 20, 28],
                    'assists': [0, 0, 0, 1, 0, 0, 0, 1]})

#view DataFrame
print(df1)

  team  points  assists
0    A      18        0
1    B      22        0
2    C      19        0
3    D      14        1
4    E      14        0
5    F      11        0
6    G      20        0
7    H      28        1

Supposons maintenant que les valeurs de la colonne d’assistance ne soient pas mises à jour dans ce DataFrame.

Cependant, supposons que nous ayons le deuxième DataFrame suivant qui a des valeurs mises à jour pour la colonne d’assistance :

#create second DataFrame
df2 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
                    'points': [18, 22, 19, 14, 14, 11, 20, 28],
                    'assists': [8, 7, 7, 4, 9, 12, 3, 5]})

#view second DataFrame
print(df2)

  team  points  assists
0    A      18        8
1    B      22        7
2    C      19        7
3    D      14        4
4    E      14        9
5    F      11       12
6    G      20        3
7    H      28        5

Nous pouvons utiliser la syntaxe suivante pour mettre à jour les valeurs de la colonne d’assistance du premier DataFrame en utilisant les valeurs de la colonne d’assistance du deuxième DataFrame :

#merge two DataFrames
df1 = df1.merge(df2, on='team', how='left')

#drop original DataFrame columns
df1.drop(['points_x', 'assists_x'], inplace=True, axis=1)

#rename columns
df1.rename(columns={'points_y':'points','assists_y':'assists'}, inplace=True)

#view updated DataFrame
print(df1)

  team  points  assists
0    A      18        8
1    B      22        7
2    C      19        7
3    D      14        4
4    E      14        9
5    F      11       12
6    G      20        3
7    H      28        5

Notez que les valeurs de la colonne d’assistance du premier DataFrame ont été mises à jour en utilisant les valeurs de la colonne d’assistance du deuxième DataFrame.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :

Comment supprimer la première ligne dans Pandas DataFrame
Comment supprimer la première colonne dans Pandas DataFrame
Comment supprimer les colonnes en double dans Pandas

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *