无法在Python

时间:2016-05-10 14:38:44

标签: pandas

我正在使用包含以下栏目的熊猫框架:

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 个答案:

答案 0 :(得分:3)

您可以使用to_numeric在科学记数条目中删除有问题的空格后使用str.replace

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

答案 1 :(得分: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