Oplossing: kan een array met het type [float64] niet vergelijken met een scalair type [bool]
Een fout die u kunt tegenkomen bij het gebruik van panda’s is:
TypeError : cannot compare a dtyped [object] array with a scalar of type [bool]
Deze fout treedt meestal op wanneer u probeert een DataFrame in te delen op basis van meerdere voorwaarden en er niet in slaagt om haakjes rond elke afzonderlijke voorwaarde te plaatsen.
Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt corrigeren.
Hoe de fout te reproduceren
Stel dat we de volgende panda’s DataFrame maken:
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
Stel nu dat we de .loc- functie proberen te gebruiken om alleen die rijen weer te geven waar team gelijk is aan „A“ en positie gelijk is aan „G“:
#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]
We ontvangen een ValueError omdat we geen haakjes rond individuele voorwaarden hebben geplaatst.
Omdat de operator & voorrang heeft op de operator == , kunnen panda’s deze verklaring niet in de juiste volgorde interpreteren.
Hoe u de fout kunt oplossen
De eenvoudigste manier om deze fout te corrigeren is door eenvoudigweg haakjes rond de afzonderlijke voorwaarden toe te voegen, als volgt:
#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
Houd er rekening mee dat we geen ValueError ontvangen en dat we erin slagen het DataFrame met succes in te delen.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in Python kunt oplossen:
Oplossing: Kolommen overlappen elkaar, maar er is geen achtervoegsel opgegeven
Oplossing: u probeert object- en int64-kolommen samen te voegen
Oplossing: Kan geen rij met niet-overeenkomende kolommen definiëren