Problembehebung: ein array vom typ [float64] kann nicht mit einem skalartyp [bool] verglichen werden.
Ein Fehler, der bei der Verwendung von Pandas auftreten kann, ist:
TypeError : cannot compare a dtyped [object] array with a scalar of type [bool]
Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, einen DataFrame basierend auf mehreren Bedingungen zu unterteilen und keine Klammern um jede einzelne Bedingung setzen.
Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.
So reproduzieren Sie den Fehler
Angenommen, wir erstellen den folgenden Pandas-DataFrame:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'C', 'G', 'F', 'F', 'C'], ' points ': [21, 30, 26, 29, 14, 29, 22, 16]}) #view DataFrame print (df) team position points 0 AG 21 1 AG 30 2 AF26 3AC 29 4 BG 14 5 BF 29 6 BF 22 7 BC 16
Nehmen wir nun an, wir versuchen, die Funktion .loc zu verwenden, um nur die Zeilen anzuzeigen, in denen Team gleich „A“ und Position gleich „G“ ist:
#attempt to only show rows where team='A' and position='G'
df. loc [df. team == ' A ' & df. position == ' G ']
TypeError : cannot compare a dtyped [object] array with a scalar of type [bool]
Wir erhalten einen ValueError, weil wir einzelne Bedingungen nicht in Klammern gesetzt haben.
Da der & -Operator Vorrang vor dem ==- Operator hat, kann Pandas diese Anweisung nicht in der richtigen Reihenfolge interpretieren.
So beheben Sie den Fehler
Der einfachste Weg, diesen Fehler zu beheben, besteht darin, die einzelnen Bedingungen einfach wie folgt in Klammern zu setzen:
#only show rows where team='A' and position='G'
df. loc [(df. team == ' A ') & (df. position == ' G ')]
team position points
0 A G 21
1 A G 30
Beachten Sie, dass wir keinen ValueError erhalten und es uns gelingt, den DataFrame erfolgreich zu unterteilen.
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Python beheben:
Lösung: Spalten überschneiden sich, es ist jedoch kein Suffix angegeben
Problemlösung: Sie versuchen, Objekt- und Int64-Spalten zusammenzuführen
Lösung: Es kann keine Zeile mit nicht übereinstimmenden Spalten definiert werden