У меня есть два следующих кадра данных:
df = pd.DataFrame({
'id': ['1', '1', '2', '3', '3', '8','4', '1', '2', '4'],
'start': ['2017-01-01', '2017-02-01', '2017-03-01', '2017-02-01', '2017-03-01', '2017-04-01', '2017-01-01', '2017-04-01', '2017-05-01', '2017-02-01'],
'end': ['2017-01-02', '2017-02-4', '2017-03-02', '2017-02-06', '2017-03-01', '2017-04-03', '2017-01-06', '2017-04-08', '2017-05-04', '2017-02-01']
})
df1 = pd.DataFrame({
'date': ['2017-01-02', '2017-02-01', '2017-03-01', '2017-02-01', '2017-03-01', '2017-04-01'],
'id': ['1', '2', '3','4', '5', '6']
})
Я хотел извлечь из df
только те строки, в которых id
в df
совпадает с id
в df1
и date
в df1
для этого конкретного id
также совпадает или находится между start
и end
в df
.
Я могу легко извлечь id
из df
, сравнив, присутствует ли тот же id
во втором кадре данных df1
, используя:
df_filtered = df[(df['id'].isin(df1['id']))]
но мне не удалось сравнить date
из df1
с start
и end
из df
. То, что я хотел как вывод, является следующим:
id start end
0 1 2017-01-01 2017-01-02
4 3 2017-03-01 2017-03-01
9 4 2017-02-01 2017-02-01
столбцы даты, начала и конца уже в формате даты-времени Y-M-D. Любая помощь будет оценена.