Ich möchte eine neue Spalte in einem Pandas DataFrame erstellen, indem ich mehrere Bedingungen in einem if-then-else-Block auswerte.Mehrere Bedingungen in if-then-else-Block in einem Pandas DataFrame auswerten
if events.hour <= 6:
events['time_slice'] = 'night'
elif events.hour <= 12:
events['time_slice'] = 'morning'
elif events.hour <= 18:
events['time_slice'] = 'afternoon'
elif events.hour <= 23:
events['time_slice'] = 'evening'
Als ich das laufen lasse, erhalte ich den Fehler unten:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Also habe ich versucht, dieses Problem zu lösen, indem Sie die eine Aussage wie unten dargestellt:
if (events.hour <= 6).any():
events['time_slice'] = 'night'
elif (events.hour <= 12).any():
events['time_slice'] = 'morning'
elif (events.hour <= 18).any():
events['time_slice'] = 'afternoon'
elif (events.hour <= 23).any():
events['time_slice'] = 'evening'
Jetzt ich tun kein Fehler, aber wenn ich die eindeutigen Werte von time_slice überprüfe, zeigt es nur 'Nacht' an
np.unique(events.time_slice)
array(['night'], dtype=object)
Wie kann ich das lösen, weil meine Daten Samples enthalten, die 'Morgen', 'Nachmittag' oder 'Abend' erhalten sollen. Vielen Dank!
Vielleicht ist die erste ist würde 'sein -1', weil, wenn der Eintrag '0' ist, könnte es machen NaN? – Divakar
@Divakar, guten Fang, danke! Ich habe meine Antwort korrigiert – MaxU