2015-12-08 19 views
5

Il codice seguente stamperà True perché la serie contiene almeno un elemento che è maggiore di 1. Tuttavia, sembra un po 'non-Pythonic. C'è un modo più Pythonic per restituire True se una serie contiene un numero che è> un valore particolare?Controlla se una serie di pandas ha almeno un elemento maggiore di un valore

import pandas as pd 

s = pd.Series([0.5, 2]) 
print True in (s > 1) 

Vero

EDIT: Non solo è la risposta di cui sopra non-Pythonic, che a volte restituire un risultato errato per qualche motivo. Per esempio:

s = pd.Series([0.5]) 
print True in (s < 1) 

False

risposta

7

Si potrebbe utilizzare any metodo per verificare se tale condizione è True almeno per un valore di:

In [36]: (s > 1).any() 
Out[36]: True 
+0

Come fai a estendere tale operazione a un insieme di colonne in modo che ritorni se c'è almeno un valore maggiore di zero tra tutti i valori? –

+0

@FedericoGentile intendi qualcosa come 'any (axis = 1) .any()'? Innanzitutto, verrà controllato su tutte le righe nel tuo sottoinsieme e produrrà la serie Pandas. Secondo, controlli le serie per qualsiasi valore 'True'. Altrimenti potresti fornire un esempio nel commento o forse meglio fare una nuova domanda con tutti i dettagli. –

+0

Intendevo se ho un dataframe con 3 colonne (A, B, C) e voglio verificare se c'è almeno un valore maggiore di 0 nella colonna A e B ... una possibile soluzione è di fare questo: (df.A> 1) .any() e (df.B> 1) .any(). C'è un modo più elegante ed elegante per farlo? –

Problemi correlati