TSRdfr["Return"] = pd.to_numeric(TSRdfr.Return, errors='coerce')
这没有将Return
的数据类型从Object转换为float64
。我尝试删除errors ='coerce'
以查看发生了什么。
我收到一条错误消息:
无法解析位置0的NaN
当我不使用errors = 'coerce'
时。
可从Refinitiv Eikon API访问返回编号。我假设它们太大而无法转换为float64
。有什么建议吗?
答案 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))