Как округлить даты до начала недели?

Тип данных :

date_firs_dep           575 non-null datetime64[ns]

Пробую:

data4['min_date'] = data4['date_firs_dep'].round('W')

Ошибка:

an integer is required (got type str)


Ответы (2 шт):

Автор решения: CrazyElf

Не забывайте модификатор, нужный, чтобы использовать соответствующие функции на сериях. Для дат это dt, для строк str:

data4['min_date'] = data4['date_firs_dep'].dt.round('W')

                                          ^^^^
→ Ссылка
Автор решения: MaxU

Пример:

Исходный фрейм:

In [36]: df
Out[36]:
   date_firs_dep
0     2020-01-01
1     2020-01-02
2     2020-01-03
3     2020-01-04
4     2020-01-05
5     2020-01-06
6     2020-01-07
7     2020-01-08
8     2020-01-09
9     2020-01-10
10    2020-01-11
11    2020-01-12
12    2020-01-13
13    2020-01-14

решение:

df['min_date'] = df['date_firs_dep'] - pd.offsets.Week(weekday=0)

результат:

In [38]: df
Out[38]:
   date_firs_dep   min_date
0     2020-01-01 2019-12-30
1     2020-01-02 2019-12-30
2     2020-01-03 2019-12-30
3     2020-01-04 2019-12-30
4     2020-01-05 2019-12-30
5     2020-01-06 2019-12-30
6     2020-01-07 2020-01-06
7     2020-01-08 2020-01-06
8     2020-01-09 2020-01-06
9     2020-01-10 2020-01-06
10    2020-01-11 2020-01-06
11    2020-01-12 2020-01-06
12    2020-01-13 2020-01-06
13    2020-01-14 2020-01-13
→ Ссылка