You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中将Datetime转为符合pd.grouper(freq='W')格式的周日期(无需Grouper)

如何将Datetime转换为与pd.Grouper(freq='W')一致的周日期

你可以直接使用pandas的dt.floor('W')方法实现,这和pd.Grouper(freq='W')默认的周周期(每周日为周期结束,周标签为该周日)完全匹配。

实现步骤

  • 确保日期列是datetime64类型(若不是,先用pd.to_datetime()转换)
  • 调用dt.floor('W')对日期向下取整,得到对应周的周日日期,这就是pd.Grouper(freq='W')分组时使用的标签值。

代码示例

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({'date': ['2022-03-10', '2022-03-15', '2022-03-21']})
# 转换为datetime类型
df['date'] = pd.to_datetime(df['date'])
# 生成与pd.Grouper(freq='W')一致的周日期
df['week_date'] = df['date'].dt.floor('W')

print(df)

输出结果

date  week_date
0 2022-03-10 2022-03-06
1 2022-03-15 2022-03-13
2 2022-03-21 2022-03-20

替代手动计算方法

如果想手动实现逻辑,可通过日期的星期数计算:

# 周日的weekday值为6,非周日日期减去(weekday +1)天得到上一个周日
df['week_date'] = df['date'] - pd.to_timedelta(df['date'].dt.weekday + 1, unit='D')

该方法与dt.floor('W')结果完全一致,但前者更简洁高效。

内容的提问来源于stack exchange,提问作者titutubs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 13:54:25