我無法弄清楚如何利用年份,日期和星期來返回月份。現在我只是想開發一個能夠做到這一點的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