2017-05-15 5 views
2

Mithilfe von Pandas, wie mehrere Dataframe-Spalte des Datentyps "Objekt" in float konvertiert werden.Konvertieren Sie mehrere Datentypen in float?

df = pd.DataFrame() 
df["A"] = ["123.45","34","-9","4","5"] 
df["B"] = ["-9.07","5.4","3","1.0","4.5557"] 
df["C"] = ["34","34.98","-9.654","45","6"] 
df["D"] = ["AAA","AVF","ERD","DFE","SFE"] 

dies mit gibt Attribute: 'Liste' Objekt kein Attribut 'anwenden':

[df["A"],df["B"],df["C"]] = [df["A"],df["B"],df["C"]].apply(pd.to_numeric, errors='coerce') 

Antwort

2
df = df.apply(pd.to_numeric, errors='coerce') 

In [119]: df 
Out[119]: 
     A  B  C 
0 123.45 -9.0700 34.000 
1 34.00 5.4000 34.980 
2 -9.00 3.0000 -9.654 
3 4.00 1.0000 45.000 
4 5.00 4.5557 6.000 

In [120]: df.dtypes 
Out[120]: 
A float64 
B float64 
C float64 
dtype: object 

UPDATE:

In [128]: df[df.columns.drop('D')] = df[df.columns.drop('D')].apply(pd.to_numeric, errors='coerce') 

In [129]: df 
Out[129]: 
     A  B  C D 
0 123.45 -9.0700 34.000 AAA 
1 34.00 5.4000 34.980 AVF 
2 -9.00 3.0000 -9.654 ERD 
3 4.00 1.0000 45.000 DFE 
4 5.00 4.5557 6.000 SFE 

In [130]: df.dtypes 
Out[130]: 
A float64 
B float64 
C float64 
D  object 
dtype: object 

UPDATE2:

In [143]: df[['A','B','C']] = df[['A','B','C']].apply(pd.to_numeric, errors='coerce') 

In [144]: df 
Out[144]: 
     A  B  C D 
0 123.45 -9.0700 34.000 AAA 
1 34.00 5.4000 34.980 AVF 
2 -9.00 3.0000 -9.654 ERD 
3 4.00 1.0000 45.000 DFE 
4 5.00 4.5557 6.000 SFE 

In [145]: df.dtypes 
Out[145]: 
A float64 
B float64 
C float64 
D  object 
dtype: object 
+0

was ist, wenn ich eine andere Spalte im Dataframe habe, die ich nicht konvertieren will? –

+0

@ Miss.X, überprüfen Sie bitte aktualisierte Antwort – MaxU

+0

Gibt es eine Möglichkeit, den zu konvertierenden Spaltennamen zu erwähnen, anstatt unerwünschte Spalte zu löschen? –

Verwandte Themen