python-年末或年初的年周组合

Pep*_*acz 4 python datetime strftime

我想从日期(其中WW是周数)构造YYYY_WW信息。我正在为年份的结局(开头)而苦苦挣扎,其中一周的一部分可能会落入下一年:

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')
Run Code Online (Sandbox Code Playgroud)

2018_01显然是不正确的。有任何简单解决方法的提示吗?

ben*_*nvc 5

您正在寻找%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')
Run Code Online (Sandbox Code Playgroud)