如何在Python pandas中将带有年份的周数转换为日期时间格式?

问题描述 投票:0回答:2

我有一个数据框

df

df = pd.DataFrame({'id': [1,2,3,4,5], 
               'week': [201613, 201714, 201715, 201716, 201717]})

看起来像:

   id    week
0   1  201613
1   2  201714
2   3  201715
3   4  201716
4   5  201717

周栏表示特定一年中的第几周。例如

201613
表示 2016 年第 13 周。

我希望添加一个新列

week_timestamp
,它应该给我本周星期一的时间戳。它应该给我类似
2016–03–28 00:00:00
的东西
201613

我怎样才能在 pandas 中做到这一点?

python regex pandas datetime
2个回答
0
投票
import pandas as pd
import datetime as dt

df = pd.DataFrame({'id': [1,2,3,4,5], 'week': [201613, 201714, 201715, 
201716, 201717]})


#use modulo to get the week number
df['weeknumber'] = df['week'] % 100


#use string slice to get year number
df['yearnumber'] = df['week'].astype(str).str[:4]


#create input for datetime.strptime
df['timestring'] = df['yearnumber'].astype(str)+"- 
w"+df['weeknumber'].astype(str) + '-1'


#create new column
df['monday'] = df['timestring'].apply(lambda x: dt.datetime.strptime(x, 
"%Y-W%W-%w"))

结果:

id  week    weeknumber  yearnumber  timestring  monday
1   201613  13          2016        2016-w13-1  2016-03-28
2   201714  14          2017        2017-w14-1  2017-04-03
3   201715  15          2017        2017-w15-1  2017-04-10
4   201716  16          2017        2017-w16-1  2017-04-17
5   201717  17          2017        2017-w17-1  2017-04-24

-3
投票

df['week_timestamp'] = pd.to_datetime(df['week'].astype(str) + '1', format='%Y%W%w')

© www.soinside.com 2019 - 2024. All rights reserved.