Prüfen, ob Variable NaN (keine Zahl) oder ein Zeitstempel ist
Zur Navigation springen
Zur Suche springen
Problem
Es gibt verschiedene Möglichkeiten, zu prüfen, ob eine Variable NaN ist (z.B. math.isnan(val). Das funktioniert wie erwartet, wenn die Variable NaN ist, ist sie jedoch nicht NaN, sondern wie in meinem Fall, ein Timestamp, tritt ein Fehler auf.
Lösung
Damit reicht eine einfache Abfrage, ob die Variable NaN ist, nicht aus. Anstatt eines ELSE-Zweiges, muss ein Fehler abgefangen werden:
def getDate(d1, d2):
datum2=datum1=d2.strftime('%d.%m.%Y')
try:
if math.isnan(d1):
datum=datum2
except TypeError:
datum1=d1.strftime('%d.%m.%Y')
maske='{}–{}'
datum=maske.format(datum1, datum2)
return datum
Obige Lösung gibt ein Datum (d2) zurück, wenn d1==NaN ist.
Ist d1 nicht NaN, gibt sie zurück d1–d2.
Pseudocode
try:
if math.isnan(val):
do_something
except TypeError:
do_something_else
Tests
Getestet mit pandas.