У меня есть датафрейм, который выглядит так:
Name Date
Person A 2019-06-18
Person A 2019-05-14
Person A 2019-04-03
Person B 2019-05-19
Person C 2019-05-16
Person C 2019-05-23
Person C 2019-05-15
Person D 2019-06-21
То, что я хочу сделать, это изменить даты тех, кто находится между 5/14 и 6/14 и вычесть 7 дней. Если после завершения этой операции они все еще находятся в этом диапазоне, вычтите еще 7 дней.
В конце я хочу, чтобы данные выглядели так:
Name Date
Person A 2019-06-18
Person A 2019-05-07
Person A 2019-04-03
Person B 2019-05-12
Person C 2019-05-09
Person C 2019-05-09
Person C 2019-05-08
Person D 2019-06-21
(После этого шага я сверну его так, чтобы у каждого человека была одна строка со всеми датами, а затем отправил бы им информацию - но я думаю, что смогу выяснить это самостоятельно.)
Прямо сейчас у меня следующий код "работает":
df = df[(df['Date'] >= '2019-05-14') & (df['Date'] <= '2019-06-14')]
df['Date'] = df['Date'] - pd.Timedelta(days=7)
Однако я не знаю, как это зациклить, и я также не знаю, как применить это без потери моих исходных данных.
Из-за этого мой код создает такой кадр:
Name Date
Person A 2019-05-07
Person B 2019-05-12
Person C 2019-05-16
Person C 2019-05-08