如何在 Alteryx 或 Python 中将日期转换为一周中的第 n 天?

Posted

技术标签:

【中文标题】如何在 Alteryx 或 Python 中将日期转换为一周中的第 n 天?【英文标题】:How to convert a date into the nth day of the week in Alteryx or Python? 【发布时间】:2021-10-09 11:26:05 【问题描述】:

如果我有一列日期,如下所示;

Date
2021-08-01
2021-08-02
2021-08-03
2021-08-01
2021-08-02

我想做的是添加一个新列,它会告诉我星期一的数量,例如日期是一年。

所以我可以看到,对于第一个记录,8 月 1 日是星期日,是一年中的第 31 个星期日,而 12 日是星期四,是一年中的第 32 个星期四。

Date        Number Of WeekDay in Year
2021-08-01            31
2021-08-02            31
2021-08-03            31
2021-08-12            32
   ...                ...

如果它更容易,有没有办法使用 Alteryx 中的 python 工具来做到这一点?

【问题讨论】:

看看datetime:docs.python.org/3/library/datetime.html#datetime.date.weekday 这能回答你的问题吗? How do I get the day of week given a date? 【参考方案1】:

answer by johnjps111 解释了这一切,但这里是一个仅使用 python 的实现(没有 alteryx):

import math
from datetime import datetime

def get_weekday_occurrences(date_string):
    year_day = datetime.strptime(date_string, '%Y-%m-%d').timetuple().tm_yday
    return math.ceil(year_day / 7)

可以如下使用:

get_weekday_occurrences('2021-08-12')

请注意,我们使用 datetime.timetuple 来获取一年中的日期 (tm_yday)。

【讨论】:

【参考方案2】:

对于 Alteryx,请尝试公式 Ceil(DateTimeFormat([date],'%j') / 7) ... 解释:无论是星期几,如果它是一年中的第一天,它也是一年中的第一个“那个工作日”......在天数8,它成为一年中的第二个“那个工作日”,依此类推。由于 Alteryx 使用给定的 DateTimeFornat 函数免费为您提供“一年中的某一天”,因此它是一个简单的除法和 Ceil() 函数。

【讨论】:

【参考方案3】:

从日期字符串中获取一年中的星期:

from datetime import datetime

a = '2021-08-02'
b = datetime.fromisoformat(a)
print('week of the year:', b.strftime('%W'))

输出:

week of the year: 31

有关日期时间的更多信息:link

【讨论】:

以上是关于如何在 Alteryx 或 Python 中将日期转换为一周中的第 n 天?的主要内容,如果未能解决你的问题,请参考以下文章

如何按 ID 分组并查找日期中的空白以确定 Alteryx 中的开始和结束日期?

如何在 Python 中将日期转换为季度?

如何在python中将字符串日期转换为日期时间格式? [复制]

如何在python中将字符串转换为日期时间[重复]

如何在 python 中将 1970 年前的日期转换为纪元? [复制]

如何在 Python 中将日期传递给 MySQLdb?