讲师中心 微信公众号

工具推荐

视频效率加速
AniShort
AniShort

AI短剧协同制作平台

Seko
Seko

AI短剧一键生成成片

剧云
剧云

中文短剧剧本制作平台

updream

一键生成高质量推广成片

如何基于起始日期与当前日期之间的周数重复数据行

雨瑶吖_3786

雨瑶吖_3786

发布时间:2026-02-04 22:23:01

|

867人浏览过

|

来源于php中文网

原创

如何基于起始日期与当前日期之间的周数重复数据行

本文介绍如何根据每行记录中日期字段与当前日期之间的完整周数,动态重复 dataframe 行,并为每条重复记录生成对应的 iso 周序号(week)和年份(year),确保时间序列连续、跨年正确、逻辑清晰。

在数据分析与报表生成中,常需将单条日期记录“展开”为以周为单位的时间序列——例如,为每个 ID 生成从其原始日期开始、直至当前周为止的每周快照。关键挑战在于:既要准确计算跨年周数,又要保证每周对应正确的 ISO 年份与周编号(如 2023-12-31 属于 2024 年第 1 周)。直接使用 .dt.days // 7 易因时区、闰年或 ISO 周规则(周一为每周起点,第1周含当年首个周四)导致偏差。

应用程序在线商店宣传网站模板
应用程序在线商店宣传网站模板

应用程序在线商店宣传网站模板是一款提供免费应用程序在线商店宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。

下载

以下提供一种健壮、向量化、无需循环的解决方案,核心思路是:
✅ 使用 pd.Period 精确对齐周粒度(避免日期算术误差)
✅ 利用 Index.repeat() 高效复制行
✅ 通过 cumcount() + pd.to_timedelta() 逐周递增日期,再调用 .dt.isocalendar() 获取标准 ISO 周信息

完整实现代码

import pandas as pd

# 构建示例数据
df = pd.DataFrame({
    'ID': ['ID001', 'ID002', 'ID003'],
    'DATE': ['24/12/2023', '01/02/2024', '12/02/2024']
})
df['DATE'] = pd.to_datetime(df['DATE'], dayfirst=True)

# 步骤 1:计算每个 ID 从 DATE 到当前日期(含)的完整周数(含起始周)
now_period = pd.Timestamp('now').to_period('W')  # 当前 ISO 周
date_periods = df['DATE'].dt.to_period('W')      # 每行 DATE 所属 ISO 周
n_weeks = date_periods.rsub(now_period).apply(lambda x: x.n)  # 周差(非负整数)

# 步骤 2:按周数重复行(+1 是为了包含起始周本身)
repeated_df = df.loc[df.index.repeat(n_weeks + 1)].copy().reset_index(drop=True)

# 步骤 3:为每组重复行生成递增的周日期,并提取 ISO 年与周
# groupby(level=0) 在 repeat 后 index 有重复,用 cumcount() 生成 0,1,2... 偏移量(单位:天)
week_offsets = repeated_df.groupby(repeated_df.index).cumcount() * 7
base_dates = df['DATE'].reindex(repeated_df.index, method='ffill')
expanded_dates = base_dates + pd.to_timedelta(week_offsets, unit='D')

# 步骤 4:添加 YEAR 和 WEEK 列(使用 isocalendar 确保 ISO 标准)
cal = expanded_dates.dt.isocalendar()
repeated_df['YEAR'] = cal.year
repeated_df['WEEK'] = cal.week

print(repeated_df[['ID', 'DATE', 'YEAR', 'WEEK']])

输出示例(运行时刻为 2024 年第 7 周)

      ID       DATE  YEAR  WEEK
0  ID001 2023-12-24  2023    51
1  ID001 2023-12-24  2023    52
2  ID001 2023-12-24  2024     1
3  ID001 2023-12-24  2024     2
4  ID001 2023-12-24  2024     3
5  ID001 2023-12-24  2024     4
6  ID001 2023-12-24  2024     5
7  ID001 2023-12-24  2024     6
8  ID001 2023-12-24  2024     7
9  ID002 2024-02-01  2024     5
10 ID002 2024-02-01  2024     6
11 ID002 2024-02-01  2024     7
12 ID003 2024-02-12  2024     7

关键注意事项

  • ISO 周兼容性:.dt.isocalendar() 是 Pandas 中唯一严格遵循 ISO 8601 周标准的方法(区别于 .dt.week 已弃用),能正确处理年末/年初跨周(如 2023-12-31 → 2024-W01)。
  • 性能优化:全程避免 for 循环与 loc[i] 赋值,利用 repeat() 和 groupby().cumcount() 实现 O(n) 时间复杂度。
  • 边界处理:n_weeks + 1 确保起始周被包含;若某行 DATE 已在当前周之后,rsub() 返回负 Period,.n 为 0,该行仅保留 1 条记录(符合业务预期)。
  • 可扩展性:如需添加“WEEK_START”列(每周一日期),可在 expanded_dates 后调用 .dt.to_period('W').dt.start_time。

此方法兼具准确性、效率与可维护性,适用于周报聚合、滚动预测、时间维度建模等典型场景。

热门AI工具

更多
码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

360

2025.12.04

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

272

2026.01.31

Python数据分析与Pandas高级实战
Python数据分析与Pandas高级实战

本专题围绕 Python 数据分析展开,系统讲解 Pandas 的高级用法,包括数据清洗、透视表、时间序列分析以及多表合并与分组操作。通过实战案例,帮助开发者掌握高效处理与分析数据的方法,提高数据处理效率与分析能力。

871

2026.04.13

PHP 高并发与性能优化
PHP 高并发与性能优化

本专题聚焦 PHP 在高并发场景下的性能优化与系统调优,内容涵盖 Nginx 与 PHP-FPM 优化、Opcode 缓存、Redis/Memcached 应用、异步任务队列、数据库优化、代码性能分析与瓶颈排查。通过实战案例(如高并发接口优化、缓存系统设计、秒杀活动实现),帮助学习者掌握 构建高性能PHP后端系统的核心能力。

20113

2025.10.16

PHP 数据库操作与性能优化
PHP 数据库操作与性能优化

本专题聚焦于PHP在数据库开发中的核心应用,详细讲解PDO与MySQLi的使用方法、预处理语句、事务控制与安全防注入策略。同时深入分析SQL查询优化、索引设计、慢查询排查等性能提升手段。通过实战案例帮助开发者构建高效、安全、可扩展的PHP数据库应用系统。

453

2025.11.13

JavaScript 性能优化与前端调优
JavaScript 性能优化与前端调优

本专题系统讲解 JavaScript 性能优化的核心技术,涵盖页面加载优化、异步编程、内存管理、事件代理、代码分割、懒加载、浏览器缓存机制等。通过多个实际项目示例,帮助开发者掌握 如何通过前端调优提升网站性能,减少加载时间,提高用户体验与页面响应速度。

348

2025.12.30

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

363

2026.03.06

宝塔面板Nginx性能优化与高并发配置实践
宝塔面板Nginx性能优化与高并发配置实践

本专题围绕宝塔环境下的 Nginx 优化展开,深入讲解缓存策略、连接数调优、Gzip 压缩、静态资源加速及反向代理配置。帮助用户提升网站访问速度与并发处理能力。

1136

2026.03.25

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

40

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app从入门到实战教程
uni-app从入门到实战教程

共0课时 | 0人学习

uni-app x harmony开发指南
uni-app x harmony开发指南

共0课时 | 0人学习

uni-app鸿蒙运行和发行
uni-app鸿蒙运行和发行

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn