如何将pandas DataFrame日期按上周五至周五分组并以对应周五为周名
pandas按自定义周周期(上周五至当周周五)分组的实现方案
核心逻辑
你的需求本质是给每个日期匹配对应周期的结束日(当周周五),用该结束日作为分组标签,直接基于pandas的日期属性计算即可,无需额外依赖。
实现步骤
- 首先确保日期列转为datetime格式
import pandas as pd # 替换df和date为你实际的DataFrame名和日期列名 df['date'] = pd.to_datetime(df['date'])
- 计算每个日期对应的周分组标签
我们以周一=0、周五=4的weekday规则计算每个日期到最近的后续周五的偏移量,直接生成符合要求的分组标签:
# 计算逻辑:(目标周五编号 - 当前日期weekday + 7) %7 得到需要偏移的天数,避免出现负数 df['week_group'] = df['date'] + pd.to_timedelta((4 - df['date'].dt.weekday + 7) % 7, unit='D')
- 按生成的周标签分组统计即可
# 示例:统计每个周的记录数 week_stats = df.groupby('week_group').size()
规则适配说明
如果你的实际周期需要调整为「包含当周周五在内,向前数7天为一个周期」,只需将偏移逻辑改为向前找最近的周五即可:
df['week_group'] = df['date'] - pd.to_timedelta((df['date'].dt.weekday - 4 +7) %7, unit='D')
内容的提问来源于stack exchange,提问作者miiia
相关产品推荐
相关产品推荐

