讲师中心 微信公众号

工具推荐

视频效率加速
Laper
Laper

剧本策划到成片协作

立刻MV
立刻MV

低成本歌曲 MV、视频生成

AniShort
AniShort

AI短剧协同制作平台

updream

一键生成高质量推广成片

如何基于日期间隔按周数重复数据行

雨瑶吖_3786

雨瑶吖_3786

发布时间:2026-02-04 22:29:06

|

1011人浏览过

|

来源于php中文网

原创

如何基于日期间隔按周数重复数据行

本文介绍如何根据每行日期与当前日期之间的完整周数,动态重复dataframe中的行,并为每条重复记录生成对应的iso周数(week)和年份(year),实现精准的时间维度展开。

在数据分析中,常需将单条时间记录“展开”为多个时间切片(如按周、月),尤其适用于周报聚合、滚动预测或时间序列对齐场景。本文解决的核心问题是:对每一行的 DATE,计算其到当前日期(pd.Timestamp('now'))之间包含多少个完整自然周(含起始周),然后将该行重复对应次数,并为每次重复分配递增的ISO周编号(含跨年处理)。

关键难点在于:

  • 周数计算需基于 ISO 周历(isocalendar()),而非简单天数除以7;
  • 重复后每行的 WEEK 应从原始日期所在周开始,逐周递增(如2023-12-24属2023年第51周,则后续为52、1、2…);
  • 必须正确处理跨年(如2023-W52 → 2024-W01);
  • 避免循环操作,保证向量化性能。

✅ 推荐方案(高效、健壮、一行逻辑清晰):

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

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

下载
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:计算每个日期到当前日期的完整ISO周数(含起始周)
# 使用 Period 进行周对齐,避免日历偏差
current_week = pd.Timestamp('now').to_period('W')
date_weeks = df['DATE'].dt.to_period('W')
n_weeks = (current_week - date_weeks).apply(lambda p: p.n)  # 得到整数周差

# 步骤2:按周数+1重复行(+1 因为包含起始周本身)
# 使用 loc + index.repeat 实现向量化重复
repeated = df.loc[df.index.repeat(n_weeks + 1)].copy().reset_index(drop=True)

# 步骤3:为每组重复行生成递增周序列(从原始日期开始,每周+7天)
# groupby(level=0) 不适用(已重置索引),改用 cumcount() 配合原始分组标识
# 更稳健做法:先恢复分组标识,再计算偏移
group_ids = repeated.index.to_series().groupby(repeated.index // 1).ngroup()  # 实际可直接用 cumcount 分组
# 简洁写法(推荐):
offset_days = repeated.groupby(repeated.index // 1).cumcount() * 7
repeated['WEEK_DATE'] = df.loc[repeated.index // 1, 'DATE'].values + pd.to_timedelta(offset_days, unit='D')

# 步骤4:提取 ISO 年份与周数
repeated['YEAR'] = repeated['WEEK_DATE'].dt.isocalendar().year
repeated['WEEK'] = repeated['WEEK_DATE'].dt.isocalendar().week

# 最终结果(保留原始列 + YEAR/WEEK)
result = repeated[['ID', 'DATE', 'YEAR', 'WEEK']].copy()
print(result)

? 输出说明(以运行时刻为2024-02-25左右为例):

  • ID001(2023-12-24)→ 跨年覆盖 W51(2023)、W52(2023)、W01–W07(2024),共9行;
  • ID002(2024-02-01)→ 从 W05 开始至 W07,共3行;
  • ID003(2024-02-12)→ 仅 W07(因2月12日属第6周?实际需看ISO规则;示例中显示为W07,表明当前为2月25日前后)。

⚠️ 注意事项:

  • pd.Timestamp('now') 在生产环境中建议替换为固定基准日期(如 pd.Timestamp('2024-02-25')),确保结果可复现;
  • isocalendar() 返回的 week 是 ISO 8601 标准(周一为每周第一天,W01为包含当年第一个周四的周),与 strftime('%U') 或 %W 行为不同;
  • 若需严格按“日历周”(周日为始)而非ISO周,请改用 .dt.strftime('%Y-%U') 并手动解析;
  • 大数据量时,避免 for 循环和 loc[i] 赋值——原问题中循环覆盖索引导致逻辑错乱,正是性能与正确性双重风险点。

? 总结:使用 Period('W') 对齐周粒度 + index.repeat() 向量化重复 + cumcount() 构建偏移序列,是处理此类“时间维度展开”任务的最优范式。它兼顾准确性(ISO周历)、简洁性(无显式循环)与扩展性(易于适配月/季度等粒度)。

热门AI工具

更多
花生AI
花生AI Hot

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

DeepSeek

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

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

WorkBuddy

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

豆包大模型

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

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

讯飞智文

一款面向学习和办公场景的AI文档创作工具,可辅助生成PPT与Word文档,提高资料整理和内容制作效率。

相关专题

更多
go语言 数组和切片
go语言 数组和切片

本专题整合了go语言数组和切片的区别与含义,阅读专题下面的文章了解更多详细内容。

2112

2025.09.03

数据分析的方法
数据分析的方法

数据分析的方法有:对比分析法,分组分析法,预测分析法,漏斗分析法,AB测试分析法,象限分析法,公式拆解法,可行域分析法,二八分析法,假设性分析法。php中文网为大家带来了数据分析的相关知识、以及相关文章等内容。

2022

2023.07.04

数据分析方法有哪几种
数据分析方法有哪几种

数据分析方法有:1、描述性统计分析;2、探索性数据分析;3、假设检验;4、回归分析;5、聚类分析。本专题为大家提供数据分析方法的相关的文章、下载、课程内容,供大家免费下载体验。

2870

2023.08.07

网站建设功能有哪些
网站建设功能有哪些

网站建设功能包括信息发布、内容管理、用户管理、搜索引擎优化、网站安全、数据分析、网站推广、响应式设计、社交媒体整合和电子商务等功能。这些功能可以帮助网站管理员创建一个具有吸引力、可用性和商业价值的网站,实现网站的目标。

7670

2023.10.16

数据分析网站推荐
数据分析网站推荐

数据分析网站推荐:1、商业数据分析论坛;2、人大经济论坛-计量经济学与统计区;3、中国统计论坛;4、数据挖掘学习交流论坛;5、数据分析论坛;6、网站数据分析;7、数据分析;8、数据挖掘研究院;9、S-PLUS、R统计论坛。想了解更多数据分析的相关内容,可以阅读本专题下面的文章。

3164

2024.03.13

Python 数据分析处理
Python 数据分析处理

本专题聚焦 Python 在数据分析领域的应用,系统讲解 Pandas、NumPy 的数据清洗、处理、分析与统计方法,并结合数据可视化、销售分析、科研数据处理等实战案例,帮助学员掌握使用 Python 高效进行数据分析与决策支持的核心技能。

4985

2025.09.08

Python 数据分析与可视化
Python 数据分析与可视化

本专题聚焦 Python 在数据分析与可视化领域的核心应用,系统讲解数据清洗、数据统计、Pandas 数据操作、NumPy 数组处理、Matplotlib 与 Seaborn 可视化技巧等内容。通过实战案例(如销售数据分析、用户行为可视化、趋势图与热力图绘制),帮助学习者掌握 从原始数据到可视化报告的完整分析能力。

7732

2025.10.14

Python 数据分析与可视化合集
Python 数据分析与可视化合集

聚焦 Python 在数据分析领域的核心应用,讲解 NumPy 数组运算、Pandas 数据清洗与聚合统计、缺失值与异常值处理、数据透视表生成,以及使用 Matplotlib、Seaborn、Pyecharts 制作折线图、柱状图、热力图、地图等多种可视化图表,适合数据分析师和运营人员快速掌握用 Python 从原始数据中挖掘洞察的能力。

416

2026.04.08

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

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

40

2026.11.06

热门下载

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

精品课程

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

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