2017-03-12 2 views
0

ich einen Tisch und ich möchte auf der Basis mehrerer Zustand filtern zum Beispiel meine Tabelle ist:wie richtig in Pandas logische Zeile Filterung tun

Old New 

0 '1' '2' 
1 '2' '2' 
2 '2' '3' 
3 '2' '1' 
4 '2' 'C' 
5 '3' '2' 

ich alle Zeilen auswählen möchten, die einen alten Wert hatte von 2 und einen neuen anderen Wert als 1 oder 2. der Code, den ich habe, ist

category_2_improvement = clean_df[(clean_df.old == '2') & (clean_df.new!= '1' or clean_df.new != '2')] 

ich die folgende Fehlermeldung erhalten:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 

Ich bin mir nicht sicher, ob ich alles oder irgendwas verwenden soll und wo ich es hinstellen soll. Können einige das Konzept erklären? Neu für Pandas.

Antwort

2

die or wird wahrscheinlich den Fehler hier verursacht, versuchen:

category_2_improvement = clean_df[(clean_df.old == '2')\ 
& ((clean_df.new!= '1') | (clean_df.new != '2'))] 
Verwandte Themen