voglio eliminare le righe quando sono soddisfatte alcune condizioni:Eliminazione di righe in base a più condizioni Python Pandas
Per esempio, un dataframe casuale viene generato:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4), columns=['one', 'two', 'three', 'four'])
print df
un'istanza di tabella è indicato come qui di seguito:
one two three four
0 -0.225730 -1.376075 0.187749 0.763307
1 0.031392 0.752496 -1.504769 -1.247581
2 -0.442992 -0.323782 -0.710859 -0.502574
3 -0.948055 -0.224910 -1.337001 3.328741
4 1.879985 -0.968238 1.229118 -1.044477
5 0.440025 -0.809856 -0.336522 0.787792
6 1.499040 0.195022 0.387194 0.952725
7 -0.923592 -1.394025 -0.623201 -0.738013
8 -1.775043 -1.279997 0.194206 -1.176260
9 -0.602815 1.183396 -2.712422 -0.377118
voglio eliminare le righe in base alle condizioni che:
Riga con valore di "uno", "due", o "tre" maggiore di 0; e valore di "quattro" inferiore a 0 devono essere eliminati.
Poi ho cercato di attuare nel modo seguente:
df = df[df.one > 0 or df.two > 0 or df.three > 0 and df.four < 1]
Tuttavia, risultando in un messaggio di errore come segue:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
qualcuno potrebbe aiutarmi su come eliminare in base a più condizioni?
Volete 'df = df [((df.one> 0) | (df.two> 0) | (df.three> 0)) e (df. quattro <1)] 'perché è perché è ambiguo confrontare gli array perché ci sono potenzialmente più corrispondenze: http://stackoverflow.com/questions/10062954/valueerror-the-truth-value-of-an-array -con-più-di-uno-elemento-è-ambiguo – EdChum
Oh, whoops, non ho visto il 'e' alla fine. Modificato. – Brionius
@Brionius: è fondamentalmente perché 'or' e' and' non possono avere il loro comportamento personalizzato da una classe. Fanno quello che fanno in base al risultato di bool (the_object), e il gioco è fatto. – DSM