Как добавить столбик года и счетчик недели в 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 шт):
Ну по идее как-то так:
- Год: берёте из даты
.dt.isocalendar().year - Неделя года: берёте из даты
.dt.isocalendar().week - Группировка по году и неделе и суммирование:
.groupby(["Год","Неделя"]).sum()
Если дата у вас не в колонке, а в индексе, то синтаксис там может быть другой, не через .dt.
Если Pandas старой версии, то там нет .isocalendar() и будет что-то вроде .dt.weekofyear.