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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert