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
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
De nouvelles questions
python-3.x
Pour les questions sur la programmation Python qui sont spécifiques à la version 3+ du langage. Utilisez la balise [python] plus générique sur toutes les questions Python et ajoutez celle-ci uniquement si votre question est spécifique à la version. Utilisez les balises [python-2.x] pour les questions Python 2.