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

如何在Alteryx或Python中计算日期是当年对应星期几的第几次出现

实现方案

方案1:Alteryx原生无代码实现

操作步骤:

  • 先使用DateTime工具将输入的Date字段转换为Alteryx标准日期格式,避免文本格式导致计算错误
  • 新增Formula工具,依次计算如下临时字段:
    1. FirstDayOfYear:当年第一天,公式为DateTimeFirstOfYear([Date])
    2. CurWeekDay:当前日期的星期编号(周日为0,周一为1,依次类推),公式为DateTimeDayOfWeek([Date], 0)
    3. FirstDayWeek:当年第一天的星期编号,公式为DateTimeDayOfWeek([FirstDayOfYear], 0)
    4. FirstTargetWeekDay:当年第一个和当前日期同星期的日期,公式为:
    IIF([CurWeekDay] >= [FirstDayWeek],
    DateTimeAdd([FirstDayOfYear], [CurWeekDay]-[FirstDayWeek], "days"),
    DateTimeAdd([FirstDayOfYear], 7 - [FirstDayWeek] + [CurWeekDay], "days")
    )
    
  • 新增最终结果字段Number Of WeekDay in Year,公式为:
    DateTimeDiff([Date], [FirstTargetWeekDay], "days")/7 + 1
    
  • 最后用Select工具删除所有临时字段,输出结果即可。

如果你的计数规则是周一为一周第一天,只需要把DateTimeDayOfWeek的第二个参数从0改成1即可。

方案2:Alteryx内置Python工具实现

将以下代码复制到Python工具的编辑区,输入端口连接你的日期数据源即可直接运行:

import pandas as pd
from alteryx import Alteryx

# 读取Alteryx输入流数据
df = Alteryx.read("#1")
# 转换为标准日期格式
df["Date"] = pd.to_datetime(df["Date"])

# 计算当年第一天
df["first_day_of_year"] = df["Date"].dt.to_period("Y").dt.to_timestamp()
# 计算星期编号,周日为0,和原生工具逻辑对齐
df["cur_weekday"] = (df["Date"].dt.weekday + 1) % 7
df["first_weekday"] = (df["first_day_of_year"].dt.weekday + 1) % 7

# 计算当年第一个同星期的日期
def get_first_target_day(row):
    if row["cur_weekday"] >= row["first_weekday"]:
        offset = row["cur_weekday"] - row["first_weekday"]
    else:
        offset = 7 - row["first_weekday"] + row["cur_weekday"]
    return row["first_day_of_year"] + pd.Timedelta(days=offset)

df["first_target_day"] = df.apply(get_first_target_day, axis=1)
# 计算最终结果
df["Number Of WeekDay in Year"] = (df["Date"] - df["first_target_day"]).dt.days //7 + 1

# 清理临时字段后输出到Alteryx
df = df.drop(columns=["first_day_of_year", "cur_weekday", "first_weekday", "first_target_day"])
Alteryx.write(df, 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 16:27:01