#python #datetime #strftime
#python #datetime #strftime
Вопрос:
Я хочу создать информацию YYYY_WW из дат (где WW — это номер недели). Я борюсь с окончаниями лет (beginnings), когда часть недели может попадать в соседний год:
import datetime
import pandas as pd
# generate range of dates and extract YYYY_WW
dates_range = pd.date_range(start='2018-12-29', end='2019-01-02')
weeks = dates_range.strftime("%Y_%V")
print(weeks)
#Index(['2018_52', '2018_52', '2018_01', '2019_01', '2019_01'], dtype='object')
2018_01
очевидно, неверно. Есть какой-нибудь намек на простое обходное решение?
Комментарии:
1. Какого поведения вы хотите? Определение ISO, означающее, что 2018-12-31 приходится на 1-ю неделю 2019 года?
2. Мне нужно
['2018_52', '2018_52', '2019_01', '2019_01', '2019_01']
, которое должно соответствовать ISO, см., например, здесь
Ответ №1:
Вы ищете %G
директиву:
Год ISO 8601 с веком, представляющим год, который содержит большую часть недели ISO (% V).
Подробнее смотрите Поведение strftime() и strptime().
Например:
import datetime
import pandas as pd
dates_range = pd.date_range(start='2018-12-29', end='2019-1-2')
weeks = dates_range.strftime('%G_%V')
print(weeks)
# Index(['2018_52', '2018_52', '2019_01', '2019_01', '2019_01'], dtype='object')