Ich habe ein Problem mit Pandas 19.2 gibt mir das Ergebnis, das ich erwarte. Die Spalten a-g haben ['ja', 'nein', '', NaN]. Wenn eine dieser Spalten 'Ja' hat, möchte ich die Zeile zurückgeben (es gibt andere Spalten, die nicht gezeigt werden). Hier ist mein Code.Pandas logische Operation
xdf2 = xdf[((xdf['a'] == 'yes').all() or
(xdf['b'] == 'yes').all() or
(xdf['c'] == 'yes').all() or
(xdf['d'] == 'yes').all() or
(xdf['e'] == 'yes').all() or
(xdf['f'] == 'yes').all() or
(xdf['g'] =='yes').all()) ]
Das gibt mir die folgende Fehlermeldung:
2134 return self._engine.get_loc(key)
2135 except KeyError:
-> 2136 return self._engine.get_loc(self._maybe_cast_indexer(key))
2137
2138 indexer = self.get_indexer([key], method=method, tolerance=tolerance)
pandas\index.pyx in pandas.index.IndexEngine.get_loc (pandas\index.c:4433)()
pandas\index.pyx in pandas.index.IndexEngine.get_loc (pandas\index.c:4279)()
pandas\src\hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:13742)()
pandas\src\hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:13696)()
KeyError: False
Ohne die '.all' ich
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Dies scheint eine einfache und gemeinsame Code-Schnipsel, aber ich haven‘ Ich habe ein gutes Beispiel gefunden. Was vermisse ich?
Ein einfaches xdf2 = xdf [(xdf [ 'a'] == 'ja') | (xdf ['b'] == 'ja') | (xdf ['c'] == 'ja') | (xdf ['d'] == 'ja')] würde funktionieren. Der Operator oder ist | – Vaishali