Ein Fehler, auf den Sie in Python stoßen können, ist der folgende:

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

Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, einen Pandas-DataFrame mit mehreren Bedingungen zu filtern, aber keine Klammern um jede einzelne Bedingung verwenden.

Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.

So reproduzieren Sie den Fehler

Angenommen, wir haben den folgenden Pandas DataFrame:

import pandas as pd

#Dataframe erstellen
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]})

#Dataframe anzeigen
print(df)

  team  points  assists  rebounds
0    A      18        5        11
1    A      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

Nehmen wir nun an, wir versuchen, den DataFrame zu filtern, um nur Zeilen anzuzeigen, in denen die Teamspalte gleich „A“ und die Punktespalte größer als 15 ist:

# Versuch, DataFrame zu filtern
df.loc[df.team == 'A' & df.points > 15]

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

Wir erhalten einen Fehler, weil wir nicht jede einzelne Bedingung in Klammern gesetzt haben.

So beheben Sie den Fehler

Um diesen Fehler zu beheben, müssen wir nur sicherstellen, dass wir bei der Durchführung des Filters jede einzelne Bedingung in Klammern setzen:

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

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

Beachten Sie, dass wir den DataFrame erfolgreich filtern können, um nur die Zeilen anzuzeigen, in denen Team gleich „A“ ist und in denen Punkte größer als 15 sind.

Beachten Sie, dass wir auch Klammern um jede einzelne Bedingung setzen müssen, wenn wir ein oder „|“ verwenden. Operator stattdessen:

# Filtern Sie Zeilen, in denen das Team gleich "A" ist oder die Punktezahl größer als 15 ist
df.loc[(df.team == 'A') | (df.points > 15)]

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

Beachten Sie, dass wir erneut alle Fehler vermeiden.

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Pandas beheben können:

Problembehebung: Modul „Pandas“ hat kein Attribut „Dataframe“
Behebung: TypeError: Keine numerischen Daten zum Plotten
So beheben Sie KeyError in Pandas

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: