Принудительная установка даты / даты / времени для ближайших пятничных панд Python - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть фрейм данных pandas с данными транзакций, с каждой транзакцией связана дата.Транзакция может произойти в любой день недели, но я хочу перенести дату на пятницу той же недели.Другими словами, дата вторника (9-17-2019) будет отображаться как 9-20-2019.Я думаю, что делал это раньше, но а) не могу вспомнить, как б) не уверен, что это было самым простым / наиболее эффективным.

Спасибо за помощь - начинающий Python здесь.

1 Ответ

1 голос
/ 22 сентября 2019

Предполагая, что ваш DataFrame ( df ):

  • имеет исходную дату в столбце Dat ,
  • текущую дату пятницыдолжен быть сохранен в Dat2 столбец,

выполнить:

df['Dat2'] = df.Dat + pd.offsets.Week(n=0, weekday=6) - pd.DateOffset(2)

Подробности:

  • + pd.offsets.Week(n=0, weekday=6) - сдвиг вближайшее воскресенье ( день недели = 6 ), но если текущий день недели уже воскресенье, сдвиг не происходит.
  • - pd.DateOffset(2) - возврат на 2 дня назад.

Тест: Для пары начальных дней сентября 2019 года результат будет:

          Dat       Dat2
0  2019-09-01 2019-08-30
1  2019-09-02 2019-09-06
2  2019-09-03 2019-09-06
3  2019-09-04 2019-09-06
4  2019-09-05 2019-09-06
5  2019-09-06 2019-09-06
6  2019-09-07 2019-09-06
7  2019-09-08 2019-09-06
8  2019-09-09 2019-09-13
9  2019-09-10 2019-09-13
10 2019-09-11 2019-09-13
11 2019-09-12 2019-09-13
12 2019-09-13 2019-09-13
13 2019-09-14 2019-09-13
14 2019-09-15 2019-09-13
15 2019-09-16 2019-09-20

Итак:

  • 2019-09-01 (Воскресенье) перенесено (назад) на 2019-08-30 ,
  • для следующих выходных (2-8.09) текущая пятница 2019-09-06 ,

и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...