2015-09-23 9 views
10

Prova 1:Come selezionare celle superiori a un valore in un dataframe Pandas con più indici?

df[ df > 1.0 ]: questo ha restituito tutte le celle in NAN.

Try2:

df.loc[ df > 1.0 ]: questo è tornato KeyError: 0

df[df['A']> 1.0]: questo funziona - Ma io voglio applicare la condizione di filtro a tutte le colonne.

+1

cosa condizione di filtro si desidera applicare, ciò che è un esempio 'df' e cosa ti aspetti come output? Quando lo si prova per l'intero df, ci saranno sicuramente alcune righe in cui solo alcune colonne soddisfano la condizione (e viceversa), quindi per i luoghi in cui la condizione non viene soddisfatta, viene sostituita con 'NaN'. –

+0

Stai provando a selezionare le righe in cui una colonna soddisfa la condizione? o dove tutte le colonne soddisfano la condizione? –

+0

@AnandSKumar Voglio selezionare le righe in cui una colonna soddisfa la condizione. Grazie per avermelo chiesto – Rex

risposta

12

Se ciò che si sta tentando di fare è selezionare solo le righe in cui una colonna soddisfa la condizione, è possibile utilizzare DataFrame.any() insieme a axis=1 (per il raggruppamento riga-saggio). Esempio -

In [3]: df 
Out[3]: 
    A B C 
0 1 2 3 
1 3 4 5 
2 3 1 4 

In [6]: df[(df <= 2).any(axis=1)] 
Out[6]: 
    A B C 
0 1 2 3 
2 3 1 4 

In alternativa, se si sta cercando di filtraggio di righe dove tutte le colonne soddisfano la condizione, utilizzare .all() inplace di .any(). Esempio di all -

In [8]: df = pd.DataFrame([[1,2,3],[3,4,5],[3,1,4],[1,2,1]],columns=['A','B','C']) 

In [9]: df 
Out[9]: 
    A B C 
0 1 2 3 
1 3 4 5 
2 3 1 4 
3 1 2 1 

In [11]: df[(df <= 2).all(axis=1)] 
Out[11]: 
    A B C 
3 1 2 1 
+3

Questo non risponde alla domanda in cui il dataframe ha un multiindice. – Elliott

Problemi correlati