我无法弄清楚如何利用年份,日期和星期来返回月份。现在我只是想开发一个能够做到这一点的Python脚本。完成此脚本后的目标是将其用于Spark SQL查询来查找月份,因为在我的数据中,每一行都有一天,一年和一周。从日,周和年的查找月份Python
截至目前我的Python代码看起来像这样。这段代码只适用于我在print中使用的语句(getmonth(2,30,2018))返回7.我尝试过其他日期,输出只有“None”。我也尝试过变量,但没有成功。
import datetime
def month(day, week, year):
for month in range(1,13):
try:
date = datetime.datetime(year, month, day)
except ValueError:
iso_year, iso_weeknum, iso_weekday = date.isocalendar()
if iso_weeknum == week:
return date.month
print(getmonth(2, 30, 2018))
#iso_(year,weeknum,weekday) are the classes for ISO. Year is 1-9999, weeknum is 0-52 or 53, and weekday is 0-6
#isocaldenar is a tuple (year, week#, weekday)
它不应该是'def getmonth(day,week,year):'或'print(month(28,30,2018))'? 您的代码也会在'print(month(28,30,2018))'返回'None'。 – Deuce
'if'只有在发生异常时才会到达,您应该将它移动到'try'块或通过一个级别的unindent块 – mugiseyebrows
@Deuce def getmonth(day,week,year)也返回none – Travis