如何基于Year与isoweek列生成完整日期列(Julia语言)
通过Year和ISO周生成日期列的Julia实现
不需要额外安装第三方包,使用Julia自带的Dates包(你已经导入)即可完成需求。从你指定的第一行结果2023-07-30来看,需要生成的是对应ISO周的周日(ISO周以周一为每周起始日,周日为当周第7天)。
完整代码示例
using DataFrames, Dates aa = DataFrame(Year = [2023,2023,2023], isoweek = [31,32,33]) # 生成目标日期列 aa.date = Date.(aa.Year, 1, 1) .+ (aa.isoweek .- 1) .* Week(1) .+ Day(6)
代码说明
Date.(aa.Year, 1, 1):批量生成对应年份的1月1日日期对象(aa.isoweek .- 1) .* Week(1):计算从ISO周1开始的偏移周数(ISO周1定义为包含当年1月4日的周,用1月1日作为基准点偏移即可对齐)+ Day(6):ISO周的第一天是周一,加6天即可得到当周的周日,正好匹配你要求的2023-07-30(2023年ISO周31的周日)
结果验证
运行代码后,aa.date列的结果为:
3-element Vector{Date}: 2023-07-30 2023-08-06 2023-08-13
如果需要生成每周的其他日期(比如周一),只需将Day(6)替换为Day(0)即可。
内容的提问来源于stack exchange,提问作者awoj
相关产品推荐
相关产品推荐

