Как добавить столбик года и счетчик недели в pandas?

Дата в исходнике у меня генерируется из csv таким образом:

csv_file["столбик_в_csv_со_временем"].dt.floor("D")]

У меня есть df такого вида: (исходник)

Дата          |Показатель_1|Показатель_2|
______________|____________|____________|
YYYY-MM-DD    |2           |3
_____________ |____________|____________|
YYYY-MM-DD    |1           |1
______________|____________|_____________
YYYY-MM-DD    |1           |4
______________|____________|_____________
YYYY-MM-DD    |2           |3
______________|____________|_____________
YYYY-MM-DD    |0           |0

Мне нужно сделать сумму показателей в 1 неделе с понедельника по воскресенье. Сделать счетчик недель и вынести год в отдельный столбик.

(Результат)

Год           |Неделя      |Показатель_1|Показатель_2|
______________|____________|____________|____________|
2020          |1           |3            5
_____________ |____________|____________|____________|
2020          |2           |1            6
______________|____________|____________|____________
2020          |3           |4            10
______________|____________|____________|____________
2020          |4           |3            11
______________|____________|____________|____________
2020          |5           |0            12

Как это реализовать? У меня следующие проблемы с реализацией: я не знаю, как выделить год из даты и не знаю, как сделать сумму недели, так как я не знаю, как по дню сделать так, чтобы определялся день недели и счетчик недель не знаю как сделать.


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

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

Ну по идее как-то так:

  • Год: берёте из даты .dt.isocalendar().year
  • Неделя года: берёте из даты .dt.isocalendar().week
  • Группировка по году и неделе и суммирование: .groupby(["Год","Неделя"]).sum()

Если дата у вас не в колонке, а в индексе, то синтаксис там может быть другой, не через .dt.

Если Pandas старой версии, то там нет .isocalendar() и будет что-то вроде .dt.weekofyear.

→ Ссылка