[英]Convert a column with a week number to a date
Is there any way the below code can be modified to convert an entire column?有什么办法可以修改下面的代码来转换一整列? I have tried several formats and am unable to get this code to work on a column of data:-
我尝试了几种格式,但无法让此代码处理一列数据:-
>>> import datetime
>>> from dateutil.relativedelta import relativedelta
>>> week = 40
>>> year = 2019
>>> date = datetime.date(year,1,1)+relativedelta(weeks=+week)
>>> date
datetime.date(2019, 10, 8)
Many thanks for helping with this.非常感谢您提供帮助。
You can try with define your own function.您可以尝试定义自己的 function。
def yourfunc(year, week):
return datetime.date(year,1,1)+relativedelta(weeks=+week)
df['new'] = [ yourfunc(x, y) for x, y in zip(df['year'], df['week'])]
May be something like this:可能是这样的:
import datetime
from dateutil.relativedelta import relativedelta
week = 40
year = 2019
date = datetime.date(year,1,1)+relativedelta(weeks=-week)
df = pd.DataFrame({'year': [2019, 2020], 'week': [40, 10]})
df['date'] = df.apply(lambda x: datetime.date(x.year,1,1) +
relativedelta(weeks=-int(x.week)), axis=1)
print(df)
year week date
0 2019 40 2018-03-27
1 2020 10 2019-10-23
Kr氪
assuming your df looks like假设你的 df 看起来像
import pandas as pd
df = pd.DataFrame({'year': [2020, 2020, 2021, 2021],
'week': [52, 53, 1, 2]})
and 'week' specifies the ISO week, you can use并且 'week' 指定 ISO 周,您可以使用
df['date'] = pd.to_datetime((df['year']*100+df['week']).astype(str)+'1' , format='%G%V%u')
# df['date']
# 0 2020-12-21
# 1 2020-12-28
# 2 2021-01-04
# 3 2021-01-11
# Name: date, dtype: datetime64[ns]
Note that you need to specify a weekday;请注意,您需要指定工作日; in the example I use '1' for Monday.
在示例中,我使用 '1' 表示星期一。 See strftime() and strptime() Format Codes for more info.
有关详细信息,请参阅strftime() 和 strptime() 格式代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.