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

Einen Kommentar hinzufügen

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