如果我有一个像下面这样的日期列;
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
... ...
如果它使它更容易有一种方法来做它使用python工具在Alteryx?
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
)。
对于Alteryx,尝试公式Ceil(DateTimeFormat([date],'%j') / 7)
…解释:不管星期几,如果是一年的第一天,它也是那个工作日的第一天。这一年……在第8天,它变成了那个工作日的第2天。年份,等等。既然Alteryx给出了"一年中的哪一天";免费使用给定的DateTimeFornat
函数,然后是一个简单的除法和Ceil()
函数。
从日期字符串中获取一年中的星期:
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
有关datetime的更多信息:link