Как получить номер недели из даты

Имею датафрейм

введите сюда описание изображения

Необходимо получить номер недели для каждой даты, для того что бы обнаружить какие ученики пропускали недели. использую метод strftime("%V"), получаю номер недели в году, но в 2021 недели обнуляются. Для этого прибавляю для 2021 года 53, но почему-то у некоторых недель 2020 года значение 106

df.lesson_day_x = df.lesson_day_x.apply(lambda x: int(x.strftime("%V")) if x.strftime("%Y")=='2020' else int(x.strftime("%V")) +53)

Но почему-то некоторые значения в 2020 году становиться равны 106... введите сюда описание изображения

Подскажите, почему некоторые значения равны 106? Как лучше отправлять ссылки на csv, что бы можно было открыть read_csv?


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

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

Не нужно изобретать велосипед, потому что

import pandas as pd

df = pd.read_csv("PostgreSQL.csv", parse_dates=["lesson_day"])
df["weeknum"] = df["lesson_day"].dt.isocalendar().week

проверяем:

print(df["weeknum"].unique())
<IntegerArray>
[41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23,
 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10,  9,  8,  7,  6,  5,  4,
  3,  2,  1, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42]
Length: 53, dtype: UInt32
→ Ссылка