Проверьте, находится ли столбец даты в диапазоне дат - панды - PullRequest
0 голосов
/ 13 февраля 2019

Я должен проверить, находится ли столбец даты в диапазоне.В частности, я должен проверить, включен ли он в диапазон, заданный другой датой +/- n дней.Предположим, мой фрейм данных:

import pandas as pd
d = {
'date1': ['2019-09-11', '2019-09-12', '2019-08-02'], 
'date2': ['2019-10-11', '2019-09-24', '2019-11-11']
}
df = pd.DataFrame(d)

Я должен проверить, если (дата2 - 5 дней) <дата1 <(дата2 + 5 дней) </p>

1 Ответ

0 голосов
/ 13 февраля 2019

Используйте between с добавлением и вычитанием 5-дневной временной шкалы с фильтрацией по boolean indexing:

d = {
'date1': ['2019-09-11', '2019-09-12', '2019-08-02'], 
'date2': ['2019-09-14', '2019-09-08', '2019-11-11']
}
#changed data for match
df = pd.DataFrame(d)
print (df)
        date1       date2
0  2019-09-11  2019-09-14
1  2019-09-12  2019-09-08
2  2019-08-02  2019-11-11

c = ['date1','date2']
df[c] = df[c].apply(pd.to_datetime)

a = df['date2'] - pd.Timedelta(5, unit='d')
b = df['date2'] + pd.Timedelta(5, unit='d')

df = df[df['date1'].between(a, b, inclusive=False)]
print (df)

       date1      date2
0 2019-09-11 2019-09-14
1 2019-09-12 2019-09-08

Другое решение с DataFrame.query:

df = df.query('@start < date1 < @end')
print (df)

       date1      date2
0 2019-09-11 2019-09-14
1 2019-09-12 2019-09-08
...