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

Ajouter un commentaire

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