Я ищу самую раннюю дату в col2, которая находится в пределах 7 дней с даты в col1
df1:
category date1 date2
blue 1/1/2018
blue 1/2/2018
blue 1/5/2018
blue 2/1/2018
green 1/3/2018
green 1/8/2018
red 12/1/2018
red 11/1/2018
red 12/5/2018
Expected results:
category date1 date2 isDateWithin7Days? EarliestDate?
blue 1/1/2018 True 1/2/2018
blue 2/1/2018 False 0
green 1/3/2018 False 1/8/2018
red 12/1/2018 False 12/5/2018
С большой помощью у меня есть код для возврата ИСТИНА и ЛОЖЬ, если есть даты с 7 днями,Как я понимаю метод .between (), он возвращает только логические значения.
Как я могу вернуть дату?
df['date1'] = pd.to_datetime(df['date1'], format = '%m-%d-%y')
df['date2'] = pd.to_datetime(df['date2'], format = '%m-%d-%y')
df1 = df.dropna(subset = ['date1']).drop(columns = ['date2'])
df2 = df.dropna(subset = ['date2']).drop(columns = ['date1'])
df3 = df1.merge(df2, on = 'category')
df3['date2'].between(df3['date1'] - pd.Timedelta(days=7), df3['date1'] + pd.Timedelta(days=7))
df3['isDateWithin7Days?'] = df3['date2'].between(df3['date1'] - pd.Timedelta(days=7), df3['date1'] + pd.Timedelta(days=7))
df3 = df3.groupby(['category', 'date1'])['isDateWithin7Days?'].sum().reset_index()
df3['isDateWithin7Days?'] = np.where(df3['isDateWithin7Days?'] > 0, True, False)