Wenn ich durch Verkettung verschiedener Bedingungen mit "UND" auswählen, funktioniert die Auswahl gut. Wenn ich durch Verketten von Bedingungen mit "ODER" wähle, löst die Auswahl einen Fehler aus.Pandas Slicing/Selecting mit mehreren Bedingungen mit oder Anweisung
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame([[1,4,3],[2,3,5],[4,5,6],[3,2,5]],
... columns=['a', 'b', 'c'])
>>> df
a b c
0 1 4 3
1 2 3 5
2 4 5 6
3 3 2 5
>>> df.loc[(df.a != 1) & (df.b < 5)]
a b c
1 2 3 5
3 3 2 5
>>> df.loc[(df.a != 1) or (df.b < 5)]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3/dist-packages/pandas/core/generic.py", line 731, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Ich würde erwarten, dass es den gesamten Datenrahmen zurückgibt, da alle Zeilen diese Bedingung erfüllen.
Und hier 'loc' weglassen werden kann, ist es reine [' boolean indexing'] (http://pandas.pydata.org/pandas-docs/stable/indexing.html#boolean-indexing). 'loc' wird verwendet, wenn Sie einige Spalten wie' df.loc [(df.a! = 1) | (df.b <5), 'a'] 'oder' df.loc [(df.a! = 1) | (df.b <5), ['a', 'b']] ' – jezrael
Und dann nette Antwort;) – jezrael