Anhängen Boolean-Spalte in der Panda-Dataframe
Ich Lerne pandas und stecken mit diesem problem hier.
Erstellte ich ein dataframe, dass die tracks alle Benutzer und die Anzahl der Zeiten, die Sie etwas Taten.
Um das problem besser zu verstehen habe ich das Beispiel:
import pandas as pd
data = [
{'username': 'me', 'bought_apples': 2, 'bought_pears': 0},
{'username': 'you', 'bought_apples': 1, 'bought_pears': 1}
]
df = pd.DataFrame(data)
df['bought_something'] = df['bought_apples'] > 0 or df['bought_pears'] > 0
In der letzten Zeile möchte ich eine Spalte hinzufügen, die angibt, wenn Sie Benutzer gekauft hat, so etwas überhaupt.
Diese Fehlermeldung erscheint:
ValueError: Der Wahrheitswert einer Serie ist mehrdeutig. Verwenden Sie einen.leer, ein.bool(), ein.Element(), ein.jede() oder eine.alle().
Verstehe ich den Punkt der Mehrdeutigkeit in der panda-Reihe ( auch hier erklärt ), aber ich konnte nicht beziehen sich auf das problem.
Interessanterweise funktioniert dies
df['bought_something'] = df['bought_apples'] > 0
Kann mir jemand helfen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie anrufen
sum
zeilenweise und vergleichen, ob dieser größer ist als0
:Bezug auf Ihre ursprünglich versucht, die Fehlermeldung sagt Ihnen, dass es zweideutig zu vergleichen, einen Skalar mit einem array, wenn Sie wollen
or
booleschen Bedingungen haben, dann müssen Sie die bit-wise operators|
und wickeln Sie die Bedingungen in Klammern aufgrund der operator-Rangfolge:Den Grund für diesen Fehler ist die Verwendung von "oder' zu 'join' zwei Boolesche Vektoren anstelle von boolean-Skalar. Das ist, warum es sagt, dass es mehrdeutig ist.