Pandas : comment soustraire deux DataFrames
Vous pouvez utiliser la syntaxe suivante pour soustraire un DataFrame pandas d’un autre :
df1.subtract(df2)
Si vous avez une colonne de caractères dans chaque DataFrame, vous devrez peut-être d’abord la déplacer vers la colonne d’index de chaque DataFrame :
df1.set_index('char_column').subtract(df2.set_index('char_column'))
Les exemples suivants montrent comment utiliser chaque syntaxe dans la pratique.
Exemple 1 : soustraire deux DataFrames Pandas (colonnes numériques uniquement)
Supposons que nous ayons les deux DataFrames pandas suivants qui n’ont que des colonnes numériques :
import pandas as pd #create first DataFrame df1 = pd.DataFrame({'points': [5, 17, 7, 19, 12, 13, 9, 24], 'assists': [4, 7, 7, 6, 8, 7, 10, 11]}) print(df1) points assists 0 5 4 1 17 7 2 7 7 3 19 6 4 12 8 5 13 7 6 9 10 7 24 11 #create second DataFrame df2 = pd.DataFrame({'points': [4, 22, 10, 3, 7, 8, 12, 10], 'assists': [3, 5, 5, 4, 7, 14, 9, 5]}) print(df2) points assists 0 4 3 1 22 5 2 10 5 3 3 4 4 7 7 5 8 14 6 12 9 7 10 5
Le code suivant montre comment soustraire les valeurs correspondantes entre les deux DataFrames :
#subtract corresponding values between the two DataFrames
df1.subtract(df2)
points assists
0 1 1
1 -5 2
2 -3 2
3 16 2
4 5 1
5 5 -7
6 -3 1
7 14 6
Exemple 2 : Soustraire deux DataFrames Pandas (mélange de colonnes de caractères et numériques)
Supposons que nous ayons les deux DataFrames pandas suivants qui ont chacun une colonne de caractères appelée team :
import pandas as pd #create first DataFrame df1 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], 'points': [5, 17, 7, 19, 12, 13, 9, 24], 'assists': [4, 7, 7, 6, 8, 7, 10, 11]}) print(df1) team points assists 0 A 5 4 1 B 17 7 2 C 7 7 3 D 19 6 4 E 12 8 5 F 13 7 6 G 9 10 7 H 24 11 #create second DataFrame df2 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], 'points': [4, 22, 10, 3, 7, 8, 12, 10], 'assists': [3, 5, 5, 4, 7, 14, 9, 3]}) print(df2) team points assists 0 A 4 3 1 B 22 5 2 C 10 5 3 D 3 4 4 E 7 7 5 F 8 14 6 G 12 9 7 H 10 3
Le code suivant montre comment déplacer la colonne d’équipe vers la colonne d’index de chaque DataFrame, puis soustraire les valeurs correspondantes entre les deux DataFrames :
#move 'team' column to index of each DataFrame and subtract corresponding values
df1.set_index('team').subtract(df2.set_index('team'))
points assists
team
A 1 1
B -5 2
C -3 2
D 16 2
E 5 1
F 5 -7
G -3 1
H 14 8
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :
Pandas : comment trouver la différence entre deux colonnes
Pandas : comment trouver la différence entre deux lignes
Pandas : comment soustraire deux colonnes