2015-03-26 46 views
5

i seguenti criteri mi dà un valore booleano Vero Falso risultato (pettine è un dataframe con oltre 1.000 colonne e sto selezionando le colonne con più di 4000 voci.colonne Pandas Selezionare dataframe utilizzando booleane

criteria=comb.ix[:,'c_0327':].count()>4000 

voglio . usarlo per selezionare i veri colonne a una nuova dataframe
di seguito appena mi dà "Unalignable chiave Serie booleano fornito"

comb.loc[criteria,] 

ho anche provato:

comb.ix[:, comb.ix[:,'c_0327':].count()>4000] 

Simile a questa risposta domanda dataframe boolean selection along columns instead of row ma che mi dà lo stesso errore: "Unalignable chiave Serie booleano fornito"

comb.ix[:,'c_0327':].count()>4000 

rendimenti:

c_0327 False 
c_0328 False 
c_0329 False 
c_0330 False 
c_0331 False 
c_0332 False 
c_0333 False 
c_0334 False 
c_0335 False 
c_0336 False 
c_0337  True 
c_0338 False 
..... 
+0

Non vuoi 'pettine [criteria.columns]'? – EdChum

+1

comb [criteri.colonne] mi dà "l'oggetto" serie "non ha attributo" colonne "" – dartdog

risposta

10

cosa viene restituito è una serie con i nomi delle colonne come indice e i valori booleani come valori di riga.

Penso che in realtà si vuole:

questo dovrebbe funzionare:

comb[criteria.index[criteria]] 

Fondamentalmente questo utilizza i valori di indice di criteri e valori booleani per mascherare loro, questo restituirà una serie di nomi di colonne , possiamo usare questo per selezionare le colonne di interesse dall'origine.

3

È anche possibile utilizzare:

 
# To filter columns (assuming criteria length is equal to the number of columns of comb) 
comb.ix[:, criteria] 
comb.iloc[:, criteria] 

# To filter rows (assuming criteria length is equal to the number of rows of comb) 
comb[criteria] 
Problemi correlati