J'ai deux trames de données, chacune a une colonne #id et une colonne de date, je veux trouver des lignes dans les deux trames de données qui ont le même identifiant avec une différence de date de plus de> 2 jours

0
ahmed ahdmmtq 4 nov. 2019 à 00:41

1 réponse

Normalement, il est utile d'inclure une trame de données afin que le répondeur n'ait pas besoin de la créer. :)

import pandas as pd
from datetime import timedelta

Créez deux trames de données:

df1 = pd.DataFrame(data={"id":[0,1,2,3,4], "date":["2019-01-01","2019-01-03","2019-01-05","2019-01-07","2019-01-09"]})
df1["date"] = pd.to_datetime(df1["date"])

df2 = pd.DataFrame(data={"id":[0,1,2,8,4], "date":["2019-01-02","2019-01-06","2019-01-09","2019-01-07","2019-01-10"]})
df2["date"] = pd.to_datetime(df2["date"])

Ils ressembleront à ceci:

DF1

   id       date
0   0 2019-01-01
1   1 2019-01-03
2   2 2019-01-05
3   3 2019-01-07
4   4 2019-01-09

DF2

   id       date
0   0 2019-01-02
1   1 2019-01-06
2   2 2019-01-09
3   8 2019-01-07
4   4 2019-01-10

Fusionnez les deux cadres de données sur les colonnes 'id':

df_result = df1.merge(df2, on="id")

Résultant en:

   id     date_x     date_y
0   0 2019-01-01 2019-01-02
1   1 2019-01-03 2019-01-06
2   2 2019-01-05 2019-01-09
3   4 2019-01-09 2019-01-10

Ensuite, soustrayez les colonnes de deux jours et filtrez pour plus de deux.

df_result[(df_result["date_y"] - df_result["date_x"]) > timedelta(days=2)]

   id     date_x     date_y
1   1 2019-01-03 2019-01-06
2   2 2019-01-05 2019-01-09
0
run-out 3 nov. 2019 à 22:49