Ich kann nicht herausfinden, wie man das Jahr, den Tag und die Woche nimmt, um den Monat zurückzugeben. Im Moment versuche ich nur ein Python-Skript zu entwickeln, das dies tut. Das Ziel nach Abschluss dieses Skripts besteht darin, es für eine Spark SQL-Abfrage zu verwenden, um den Monat zu finden, da ich in meinen Daten einen Tag, ein Jahr und eine Woche in jeder Zeile angegeben habe.Monat von Tag, Woche und Jahr finden Python
Ab sofort sieht mein Python-Code so aus. Dieser Code funktioniert nur für die Anweisung, die ich in den Druck habe (getmonth (2, 30, 2018) gibt 7 zurück. Ich habe andere Daten ausprobiert und die Ausgabe ist nur "None". Ich habe auch Variablen versucht, aber keinen Erfolg.
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)
Sollte es nicht sein 'def getmonth (Tag, Woche, Jahr):' oder 'drucken (Monat (28, 30, 2018))'? Ihr Code gibt 'None' für' print (Monat (28, 30, 2018)) 'ebenfalls zurück. – Deuce
'if' nur erreicht, wenn eine Ausnahme aufgetreten ist, sollten Sie es auf' try' Block verschieben oder es um eine Ebene – mugiseyebrows
@Deuce def getmonth (Tag, Woche, Jahr) auch keine zurück – Travis