DataFrame df
有一个名为LastPrice
的列。 df['LastPrice']
中的每一个都是string
,我想将string
转换为float
。我使用map
来解决它。
#-*- encoding:utf-8 -*-
import pandas as pd
from pandas import Series,DataFrame
df = DataFrame({'Time':['1-14','1-15','1-16'],'LastPrice':['1.0','2.0','3.0']},columns = ['Time','LastPrice'])
f_L = df['LastPrice'].map(float)
print type(f_L[0])
print type(df['LastPrice'][0])
结果是:
<type 'numpy.float64'>
<type 'str'>
[Finished in 1.2s]
所以map
无法转换数据类型in-placce,我只是这样做:
df['LastPrice'] = f_L
有没有办法有效地隐藏DataFrame列中的数据类型? 我的意思是就地转换数据类型,而不是重新分配。
答案 0 :(得分:1)
您可以将pd.to_numeric
用于["GIS-R-0001","1","1","1","6032","0","1","3223","10000000.00","1","2016-01-10 09:45:36","1602"]
版本&gt; = pandas
:
0.17.0
在版本&lt; = pd.to_numeric(df['LastPrice'])
In [110]: pd.to_numeric(df['LastPrice'])
Out[110]:
0 1
1 2
2 3
Name: LastPrice, dtype: float64
中,您可以使用convert_objects
:
0.17.0
答案 1 :(得分:1)
您可以尝试astype
:
df['LastPrice'] = df['LastPrice'].astype(float)
df = DataFrame({'Time':['1-14','1-15','1-16'],'LastPrice':['1.0','2.0','3.0']},
columns = ['Time','LastPrice'])
df['LastPrice'] = df['LastPrice'].astype(float)
print df
Time LastPrice
0 1-14 1
1 1-15 2
2 1-16 3
print type(df['LastPrice'][0])
<type 'numpy.float64'>
答案 2 :(得分:0)
我有时会使用自定义函数
def str_to_flt(s):
try:
return float(s)
except ValueError:
return None
然后我通过
使用自定义功能 df['FloatField']=df['StrField'].apply(str_to_flt)
然后我可以识别出坏的&#34;值设置为NaN。
希望这有帮助。