2015-12-30 8 views
16

Mam PANDAS DF gdy trzeba filtr niektóre rzędy zawierający wartości == 0 do funkcji „a”, a cechą 'b'.porównanie dtype [float64] tablicę ze skalarnym typu [bool] W PANDAS DataFrame

W celu sprawdzenia wartości, to należy uruchomić następujące:

DF1 = DF[DF['a'] == 0] 

która zwraca odpowiednie wartości. Podobnie, wykonując to:

DF2 = DF[DF['b'] == 0] 

Widzę wartości 0 dla funkcji "b".

Jednakże, jeśli staram się połączyć te 2 w jednej linii kodu za pomocą OR argument:

DF3 = DF[DF['a'] == 0 | DF['b'] == 0] 

uzyskać to:

TypeError: cannot compare a dtyped [float64] array with a scalar of type [bool] 

Co się tutaj dzieje?

Odpowiedz

42

Możesz przekształcić kolumnę "a" lub "b", tak aby były one albo float64, albo bool. Jednak łatwiejsze rozwiązanie, które zachowuje typ danych swoich funkcji to:

DF3 = DF[(DF['a'] == 0) | (DF['b'] == 0)] 

Wspólne działanie jest stosowanie logicznych wektorów do filtrowania danych. Operatorzy to: | dla lub, & dla i, i ~ dla nie. Należy je pogrupować za pomocą nawiasów.

+9

I wreszcie przeczytałem pogrubiony tekst o nawiasach! –

Powiązane problemy