2014-11-12 14 views
16

Ho una colonna di un dataframe panda che ho ricevuto da una query di database con celle blanck. Le celle vuote diventano "Nessuno" e voglio verificare se ciascuna delle righe vale None:Selezione di celle Panda con valore None

In [325]: yes_records_sample['name'] 
Out[325]: 
41055 John J Murphy Professional Building 
25260         None 
41757    Armand Bayou Nature Center 
31397         None 
33104    Hubert Humphrey Building 
16891       Williams Hall 
29618         None 
3770       Covenant House 
39618         None 
1342  Bhathal Student Services Building 
20506         None 

mia comprensione per la documentazione è che posso controllare se ogni riga è nullo con isnull() comando http://pandas.pydata.org/pandas-docs/dev/missing_data.html#values-considered-missing

Tale funzione, tuttavia, non sta lavorando per me:

In [332]: isnull(yes_records_sample['name']) 

ottengo il seguente errore:

NameError Traceback (most recent call last) 
<ipython-input-332-55873906e7e6> in <module>() 
----> 1 isnull(yes_records_sample['name']) 
NameError: name 'isnull' is not defined 

ho anche visto che qualcuno appena sostituito le corde "Nessuno", ma nessuna di queste varianti di tale approccio ha funzionato per me: Rename "None" value in Pandas

yes_records_sample['name'].replace('None', "--no value--") 
yes_records_sample['name'].replace(None, "--no value--") 

sono stato in ultima analisi, in grado di utilizzare la funzione fillna e riempire ciascuno di quelle file con una stringa vuota yes_records_sample.fillna('') come soluzione alternativa e quindi potrei controllare yes_records_sample['name']=='' Ma sono profondamente confuso da come "Nessuno" funziona e cosa significa. C'è un modo per controllare semplicemente se una cella in un dataframe è 'None'?

risposta

27

chiamare in questo modo:

yes_records_sample['name'].isnull() 
+0

Ho cercato di capire come aggiungere una colonna a un frame di dati panda che è vero se "impact" == "HIGH" o "clin_acc" non è Null. Questo ha aiutato moltissimo: nbs_annot ['pathogenic'] = (nbs_annot ['impact'] == 'HIGH') | ~ Nbs_annot [ 'clin_acc']. IsNull() – SummerEla

1

non ho potuto trovare qualsiasi built-in che fa esattamente questo, quindi farlo manualmente. In caso di serie, il codice è questo:

import numpy as np 
series = yes_records_sample['name'] 
n = np.empty_like(series) 
n[...] = None 
nones = series.values == n 

In caso di DataFrames, il codice è molto simile:

import numpy as np 
df = yes_records_sample 
n = np.empty_like(df) 
n[...] = None 
nones = df == n 

Il mio problema con .isnull() è che non fa distinzione tra NaN e nessuno. Questo potrebbe o non potrebbe essere un problema nella tua applicazione.

Problemi correlati