Oplossing: kan "rand_" niet uitvoeren met een array van type [int64] en een scalair van type [bool]


Een fout die je tegen kunt komen in Python is:

 TypeError :Cannot perform 'rand_' with a dtyped [int64] array and scalar of type [bool]

Deze fout treedt meestal op wanneer u een Panda’s DataFrame probeert te filteren met meerdere voorwaarden, maar geen haakjes rond elke afzonderlijke voorwaarde kunt gebruiken.

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 hebben:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points ': [18, 22, 19, 14, 14, 11, 20, 28],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
print (df)

  team points assists rebounds
0 A 18 5 11
1 to 22 7 8
2 A 19 7 10
3 A 14 9 6
4 B 14 12 6
5 B 11 9 5
6 B 20 9 9
7 B 28 4 12

Laten we nu zeggen dat we het DataFrame proberen te filteren om alleen rijen weer te geven waarvan de teamkolom gelijk is aan ‚A‘ en de puntenkolom groter is dan 15:

 #attempt to filter DataFrame
df. loc [df. team == ' A ' & df. points > 15 ]

TypeError :Cannot perform 'rand_' with a dtyped [int64] array and scalar of type [bool]

We ontvangen een foutmelding omdat we geen haakjes rond elke afzonderlijke voorwaarde hebben geplaatst.

Hoe u de fout kunt oplossen

Om deze fout op te lossen, hoeven we er alleen maar voor te zorgen dat we haakjes rond elke afzonderlijke voorwaarde plaatsen wanneer we het filter uitvoeren:

 #filter DataFrame
df. loc [(df. team == ' A ') & (df. points > 15 )]

	team points assists rebounds
0 A 18 5 11
1 to 22 7 8
2 A 19 7 10

Houd er rekening mee dat we het DataFrame met succes kunnen filteren om alleen rijen weer te geven waarin Team gelijk is aan ‚A‘ en Punten groter zijn dan 15.

Merk op dat we ook haakjes rond elke individuele voorwaarde moeten plaatsen als we een of “| » operator in plaats daarvan:

 #filter rows where team is equal to 'A' or points is greater than 15
df. loc [( df.team == ' A ') | (df. points > 15 )]

team points assists rebounds
0 A 18 5 11
1 to 22 7 8
2 A 19 7 10
3 A 14 9 6
6 B 20 9 9
7 B 28 4 12

Merk op dat we opnieuw eventuele fouten vermijden.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in panda’s kunt oplossen:

Oplossing: de module “pandas” heeft geen “dataframe” attribuut
Oplossing: TypeError: geen numerieke gegevens om te plotten
Hoe KeyError in Panda’s te repareren

Einen Kommentar hinzufügen

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