Erstellen einer bedingten Spalte: If-Elif-Else in Pandas
Das gegebene Problem fordert das Hinzufügen einer neuen Spalte zu einem DataFrame basierend auf einer Reihe von bedingten Kriterien. Die Herausforderung besteht darin, diese Bedingungen zu implementieren und gleichzeitig die Effizienz und Lesbarkeit des Codes aufrechtzuerhalten.
Lösung mit Funktionsanwendung
Ein Ansatz besteht darin, eine Funktion zu erstellen, die jede Zeile dem gewünschten Ergebnis zuordnet basierend auf den Bedingungen:
def f(row):
if row['A'] == row['B']:
return 0
elif row['A'] > row['B']:
return 1
else:
return -1
df['C'] = df.apply(f, axis=1)
Diese Methode ist lesbar und einfach zu implementieren, aber sie ist nicht vektorisiert und kann bei großen Datensätzen zu Leistungsproblemen führen.
Vektorisierte Lösung
Aus Effizienzgründen wird ein vektorisierter Ansatz mit der Funktion np.where von NumPy empfohlen:
df['C'] = np.where(
df['A'] == df['B'], 0, np.where(
df['A'] > df['B'], 1, -1))
Diese Operation führt die bedingte Auswahl elementweise auf dem DataFrame durch, was zu einer neuen Spalte mit den gewünschten Werten führt.
Dieser vektorisierte Ansatz bietet erhebliche Leistungsvorteile im Vergleich zur funktionsbasierten Methode. Es ermöglicht auch eine prägnantere und lesbarere Implementierung der bedingten Kriterien.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3