как сравнить два кадра данных на основе разницы в дате - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть два фрейма данных, каждый из которых содержит столбец #id и столбец даты. Я хочу найти строки в обоих фреймах данных с одинаковым идентификатором с разницей в датах более чем на 2 дня

1 Ответ

0 голосов
/ 04 ноября 2019

Обычно полезно включить datafrme, чтобы респонденту не нужно было его создавать. :)

import pandas as pd
from datetime import timedelta

Создайте два кадра данных:

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"])

Они будут выглядеть следующим образом:

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

Объедините два фрейма данных в столбцах id:

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

В результате:

   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

Затем вычтите двухдневные столбцы и отфильтруйте их больше двух.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...