Python Pandas to_datetime将年份周转换为2019年的日期,第一周为wk0
我过去常常使用年和周数来转换为一些提议的日期。 它在2019年之前运行良好,但当我尝试导入2019年wk1数据时,它已连接 2019年wk1在2019-01-07~2019-01-03之间 但相反,如果我用date转换成year和wk,它是正确的 我可以知道我的密码有什么问题吗?谢谢Python Pandas to_datetime将年份周转换为2019年的日期,第一周为wk0,python,pandas,Python,Pandas,我过去常常使用年和周数来转换为一些提议的日期。 它在2019年之前运行良好,但当我尝试导入2019年wk1数据时,它已连接 2019年wk1在2019-01-07~2019-01-03之间 但相反,如果我用date转换成year和wk,它是正确的 我可以知道我的密码有什么问题吗?谢谢 d = {'year': [2018, 2018, 2018, 2019, 2019, 2019], 'week': [0, 1, 52, 0, 1, 2]} df = pd.DataFrame(data=d) d
d = {'year': [2018, 2018, 2018, 2019, 2019, 2019], 'week': [0, 1, 52, 0, 1, 2]}
df = pd.DataFrame(data=d)
df['date'] = pd.to_datetime(df['year'].map(str) + df['week'].map(str) + '-4', format='%Y%W-%w')
df['yearwk'] = pd.to_datetime(df['date'], format='%Y-%M-%D').dt.strftime('%YW%V')
print(df)
year week date yearwk
0 2018 0 2018-01-04 2018W01
1 2018 1 2018-01-04 2018W01
2 2018 52 2018-12-27 2018W52
3 2019 0 2019-01-03 2019W01
4 2019 1 2019-01-10 2019W02
5 2019 2 2019-01-17 2019W03
我使用给定的年份和周数转换为日期。理想情况下,2019WK1应该在2018-12-31到2019-01-05之间,但它变成了2019-01-06到2019-01-13。
然后我用那个日期转换成年和周,结果就是我所期望的
%W:一年中的周数(星期一为一周的第一天)作为十进制数。新年中第一个星期一之前的所有日子都被视为在第0周
%w:以十进制数字表示的工作日,其中0表示星期日,6表示星期六
您将4作为%w,表示您需要提供的星期四的日期
从周一开始的2018年第一周(%W
=1)为:1月1日至1月7日或1月4日(周四)
2019年从周一开始的第一周(%W
=1)是:1月7日至1月13日或1月10日(周四)
对于2018年,前一周没有周四,因此
%W
=0将输出与%W
=1相同的结果。但是,2019年前一周有一个星期四,因此%W
=0将在1月3日输出。是否连线?真正地