So beheben sie das problem in pandas: der wahrheitswert einer serie ist nicht eindeutig
Ein Fehler, der in Python auftreten kann, ist:
ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
a.any() or a.all().
Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, einen Pandas-DataFrame mithilfe der Wörter und und oder anstelle der Zeichen & und | zu filtern die Betreiber.
In diesem Tutorial wird erläutert, wie Sie diesen Fehler in der Praxis beheben können.
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'],
' 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
Nehmen wir nun an, wir versuchen Zeilen zu filtern, in denen das Team gleich „A“ ist und die Punkte weniger als 20 betragen:
#attempt to filter DataFrame
df[(df[' team '] == ' A ') and (df[' points '] < 20 )]
ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
a.any() or a.all().
Oder nehmen wir an, wir versuchen, Zeilen zu filtern, in denen das Team gleich „A“ ist oder in denen die Punkte weniger als 20 betragen:
#attempt to filter DataFrame
df[(df[' team '] == ' A ') or (df[' points '] < 20 )]
ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
a.any() or a.all().
In beiden Szenarien erhalten wir eine Fehlermeldung, die uns mitteilt, dass der Wahrheitswert einer Reihe nicht eindeutig ist.
So beheben Sie den Fehler
Um diesen Fehler beim Filtern zu vermeiden, müssen wir sicherstellen, dass wir & und | verwenden Elemente. die Betreiber.
Beispielsweise können wir den folgenden Code verwenden, um Zeilen zu filtern, in denen Team gleich „A“ ist und die Punkte weniger als 20 betragen:
#filter DataFrame
df[(df[' team '] == ' A ') & (df[' points '] < 20 )]
team points assists rebounds
0 A 18 5 11
2 A 19 7 10
3 A 14 9 6
Oder wir könnten den folgenden Code verwenden, um Zeilen zu filtern, in denen das Team „A“ entspricht oder die Punkte weniger als 20 betragen:
#filter DataFrame
df[(df[' team '] == ' A ') | (df[' points '] < 20 )]
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
In beiden Szenarien erhalten wir keine Fehlermeldung, da wir & und | verwendet haben Elemente. die Betreiber.
Hinweis : Es ist wichtig, Klammern um jede einzelne Bedingung einzufügen, wenn Sie einen Pandas-DataFrame nach mehreren Bedingungen filtern, andernfalls erhalten Sie eine Fehlermeldung.
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Python beheben:
So beheben Sie das Problem: Das „Pandas“-Modul verfügt nicht über das „Dataframe“-Attribut
So beheben Sie das Problem in Pandas: SettingWithCopyWarning
So beheben Sie das Problem in Pandas: TypeError: Keine numerischen Daten zum Plotten