我正在尝试将对象类型列转换为float。无法运作

时间:2019-04-05 01:00:29

标签: python thomson-reuters-eikon refinitiv-eikon-api

TSRdfr["Return"] = pd.to_numeric(TSRdfr.Return, errors='coerce')

这没有将Return的数据类型从Object转换为float64。我尝试删除errors ='coerce'以查看发生了什么。

我收到一条错误消息:

  

无法解析位置0的NaN

当我不使用errors = 'coerce'时。

可从Refinitiv Eikon API访问返回编号。我假设它们太大而无法转换为float64。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

尝试以下操作:

import pandas as pd
import re
repat = re.compile('\d+(?:\.\d+)?')

# sample data frame 
df = pd.DataFrame({'Return': ['some data 123.123', 'tick 0.12']})

df.loc[:, 'Converted'] = df.Return.apply(lambda x: float(repat.findall(x)[0]))

希望有帮助

答案 1 :(得分:0)

如果您的数字太大,可以使用十进制库

import decimal
decimal.getcontext().prec = 100
df[col] = df[col].map(lambda x: decimal.Decimal(x))