我正在使用包含以下栏目的熊猫框架:
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'。 任何帮助,将不胜感激。我是熊猫的新手。 感谢
答案 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