如何在 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中将字符串日期转换为日期时间格式? [复制]