Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas to_datetime将年份周转换为2019年的日期,第一周为wk0_Python_Pandas - Fatal编程技术网

Python Pandas to_datetime将年份周转换为2019年的日期,第一周为wk0

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

我过去常常使用年和周数来转换为一些提议的日期。 它在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)
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日输出。

是否连线?真正地