2013-05-16 20 views
10

Ho appena preso in mano i Panda per eseguire alcuni lavori di analisi dei dati nella mia ricerca di biologia. Risulta che una delle proteine ​​che sto analizzando si chiama 'NA'.Pandas Converti 'NA' in NaN

Ho una matrice con coppia "HA, M1, M2, NA, NP ..." sulle intestazioni delle colonne e la stessa di "intestazioni di riga" (per i biologi che potrebbero leggere questo, sto lavorando con l'influenza).

Quando importare i dati in Panda direttamente da un file CSV, legge "intestazioni di riga" come "HA, M1, M2 ..." e quindi NA viene letto come NaN. C'è un modo per fermare questo? Le intestazioni delle colonne sono soddisfacenti - 'HA, M1, M2, NA, NP etc ...'

+0

per la soluzione trucco stupido, è possibile cerca/sostituisci nel csv e rinomina 'NA' in qualcosa come' NA_safe'. – flies

risposta

10

disattivare il rilevamento NaN questo modo: pd.read_csv(filename, keep_default_na=False)

Originariamente ho suggerito na_filter=False, che ottiene il lavoro fatto. Ma, se capisco i commenti di Jeff qui sotto, questa è una soluzione più pulita.

Esempio:

In [1]: pd.read_csv('test') 
Out[1]:[4]: pd.read_csv('test', keep_default_na=False) 
Out[4]:1 2 
2 3 
+0

forse vale la pena menzionare 'na_values' :) –

+0

Sì. A proposito, mi sembra strano che nè 'na_values ​​= None'' (il default) nè' na_values ​​= [] '' sopprima il rilevamento NaN in questo caso. –

+0

"* Altre * stringhe da riconoscere come NA/NaN." Ma sì ... –

3

appena incontrato questo problema - ho specificato un convertitore str per la colonna, invece, così ho potuto tenere na altrove: pd.read_csv(... , converters={ "file name": str, "company name": str})

Problemi correlati