2014-11-06 13 views

risposta

10

Usa convert_objects con param convert_numeric=True questo sarà costringere tutti i valori non numerici per NaN:

In [24]: 

df = pd.DataFrame({'a': [0.1,0.5,'jasdh', 9.0]}) 
df 
Out[24]: 
     a 
0 0.1 
1 0.5 
2 jasdh 
3  9 
In [27]: 

df.convert_objects(convert_numeric=True) 
Out[27]: 
    a 
0 0.1 
1 0.5 
2 NaN 
3 9.0 
In [29]: 

si può poi rilasciarli:

df.convert_objects(convert_numeric=True).dropna() 
Out[29]: 
    a 
0 0.1 
1 0.5 
3 9.0 

UPDATE

Dalla versione 0.17.0 questo il metodo è ora deprecated e tu hai bisogno di t o utilizzare to_numeric purtroppo questo opera su un Series piuttosto che un intero df modo che il codice equivalente è ora:

df.apply(lambda x: pd.to_numeric(x, errors='coerce')).dropna() 
+0

Grazie per questo! Il mio dataframe ha più colonne. Alcune colonne devono avere stringhe. Ad esempio, ho una colonna "nome" e una colonna "età". La colonna "età" deve essere numerica. Ho provato: df.age.convert_objects (convert_numeric = True) e ottenuto l'oggetto 'Series' non ha attributo 'convert_objects'. – user3347713

+0

È necessario eseguire 'df [['età']]. Convert_objects (convert_numeric = True)' in questo caso – EdChum

+0

Oh capisco, quindi [['età']] seleziona una colonna in df. Molto utile. Tuttavia, sto ottenendo un TypeError: convert_objects() ha ottenuto un argomento di parole chiave inaspettato 'convert_numeric. Ho appena controllato la documentazione e 'convert_numeric = True' è l'argomento corretto. Pensieri? – user3347713

0

È possibile trovare il tipo di dati di una colonna dall'attributo dtype.kind. Qualcosa come df[col].dtype.kind. Vedi the numpy docs per maggiori dettagli. Trasporre il dataframe per passare da indici a colonne.

Problemi correlati