2014-11-06 11 views

Antwort

10

Verwenden convert_objects mit param convert_numeric=True diese alle nicht numerische Werte NaN coerce werden:

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]: 

Sie können sie dann fallen:

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

UPDATE

Seit Version 0.17.0 diese Methode ist jetzt deprecated und Sie brauchen t o verwenden to_numeric leider auf einem Series arbeitet eher als eine ganze df so der entsprechende Code ist jetzt:

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

Dank dafür! Mein Datenrahmen hat mehrere Spalten. Einige Spalten müssen Zeichenfolgen haben. Zum Beispiel habe ich eine Spalte "Name" und eine Spalte "Alter". Die Spalte 'Alter' muss numerisch sein. Ich habe versucht: df.age.convert_objects (convert_numeric = True) und bekam 'Series' Objekt hat kein Attribut 'convert_objects'. – user3347713

+0

Sie müssen 'df [['age']]. Convert_objects (convert_numeric = True)' in diesem Fall – EdChum

+0

Oh, ich sehe, so [['age']] wählt eine Spalte in df. Sehr hilfreich. Ich bekomme jedoch einen TypeError: convert_objects() hat ein unerwartetes Schlüsselwort argument 'convert_numeric'. Ich habe gerade die Dokumentation überprüft und "convert_numeric = True" ist das richtige Argument. Gedanken? – user3347713

0

Sie können den Datentyp einer Spalte aus dem Attribut dtype.kind finden. So etwas wie df[col].dtype.kind. Weitere Informationen finden Sie unter the numpy docs. Transponiere den Datenrahmen von Indizes zu Spalten.

Verwandte Themen