Chcę usunąć wiersze z ramki danych pandy, gdy wartość kolumny daty znajduje się na liście dat. Poniższy kod nie działa:
a=['2015-01-01' , '2015-02-01']
df=df[df.datecolumn not in a]
Otrzymuję następujący błąd:
ValueError: Wartość prawdziwości serii jest niejednoznaczna. Użyj a.empty, a.bool (), a.item (), a.any () lub a.all ().
Series.isin
, że nieDataFrame.isin
. Porównujesz dla kolumny, a nie całego df.Możesz użyć
Series.isin
:Chociaż komunikat o błędzie sugeruje, że
all()
lubany()
można ich użyć, są one przydatne tylko wtedy, gdy chcesz zredukować wynik do pojedynczej wartości logicznej. Nie jest to jednak to, co próbujesz teraz zrobić, czyli przetestować przynależność każdej wartości w Serii do listy zewnętrznej i zachować wyniki w nienaruszonym stanie (tj. Seria Boolean, która zostanie następnie użyta do wycięcia oryginalnego DataFrame ).Możesz przeczytać więcej na ten temat w Gotchas .
źródło