J'ai deux dataframes identiques dans pandas / python (a et b) seules les valeurs sont différentes:

Une:

date       a1 a2 a3
01.01.2020 2  2  2
02.01.2020 3  3  3
03.01.2020 4  4  4

B:

date       a1 a2 a3
01.01.2020 1  1  1
01.01.2020 2  2  2
01.01.2020 3  3  3

J'ai besoin de a - b et je m'attends à voir le résultat c:

date       a1 a2 a3
01.01.2020 1  1  1
01.01.2020 1  1  1
01.01.2020 1  1  1

A - b ne fonctionne pas et je ne peux pas comprendre comment. Pourriez vous m'aider s'il vous plait? Merci!

1
wotesi 1 juin 2020 à 21:52

3 réponses

Meilleure réponse

En supposant que les dates dans les deux dataframes sont identiques, vous pouvez utiliser df.sub:

df = a.set_index('date').sub(b.set_index('date')).reset_index()

Production:

         date  a1  a2  a3
0  01.01.2020   1   1   1
1  01.01.2020   1   1   1
2  01.01.2020   1   1   1
1
Mayank Porwal 1 juin 2020 à 19:09

Vous pouvez set_index:

new_df = (a.set_index('date') - b.set_index('date')).reset_index()

Cependant, cela ne fonctionne que si vos dates sont identiques entre les deux dataframes et différentes dans chacune.

Dans l'autre cas (comme indiqué dans vos exemples de données), vous pouvez faire:

c = b.copy()
c.iloc[:,1:] = a.iloc[:, 1:] - b.iloc[:,1:]
2
Quang Hoang 2 juin 2020 à 09:38

Essayez d'utiliser df1.subtract(df2). Simple et élégant.

0
snatchysquid 1 juin 2020 à 18:56