2016-05-10 86 views
4

我使用含類似下面列的熊貓架製造:無法大熊貓列轉換從物體漂浮在蟒蛇

data = {'chindice': [ '-1', '5.89 e-06', '6.76 e-06', '6.31 e-06', '1', 
     '4', np.nan], 
     'target': ['classe1', 'classe2', 'classe3', np.nan,'classe5', 'classe4', 'classe5' ], 
     } 
df = pd.DataFrame(data) 

我需要使用的列「chindice」作爲浮動,但我不能,因爲列dtype是'object'。 任何幫助,將不勝感激。我是熊貓的新手。 感謝

回答

2

可以使用str.replace在科學記數法項剝離問題的空間使用後to_numeric

In [15]: 
df['chindice'] = pd.to_numeric(df['chindice'].str.replace(' ',''), errors='force') 
df 

Out[15]: 
    chindice target 
0 -1.000000 classe1 
1 0.000006 classe2 
2 0.000007 classe3 
3 0.000006  NaN 
4 1.000000 classe5 
5 4.000000 classe4 
6  NaN classe5 

不用擔心顯示器,真正的價值還是有的:

In [17]: 
df['chindice'].iloc[1] 

Out[17]: 
5.8900000000000004e-06 
+0

感謝這一個爲我工作 –

0

您可以使用replace任意空格\s+然後由astype轉換爲float

df['chindice'] = df.chindice.str.replace(r'\s+','').astype(float) 
print df 
    chindice target 
0 -1.000000 classe1 
1 0.000006 classe2 
2 0.000007 classe3 
3 0.000006  NaN 
4 1.000000 classe5 
5 4.000000 classe4 
6  NaN classe5 

#temporaly display with precision 8 
with pd.option_context('display.precision', 8): 
    print df 
    chindice target 
0 -1.00000000 classe1 
1 0.00000589 classe2 
2 0.00000676 classe3 
3 0.00000631  NaN 
4 1.00000000 classe5 
5 4.00000000 classe4 
6   NaN classe5