为了账号安全,请及时绑定邮箱和手机立即绑定

如何解决通过正则表达式获取字符串的“将字符串转换为浮点数时出错”?

如何解决通过正则表达式获取字符串的“将字符串转换为浮点数时出错”?

千巷猫影 2022-05-24 17:03:08
我已经使用正则表达式从文本中提取了数字。df1['numbers3'] = df1['TEXT'].str.findall(r'(\d+\.\d+)').apply(','.join)我现在想将它们转换为浮点数以进行一些比较。我试过这个df1['numbers3'].apply(lambda x:float(x))和df1['numbers3']=df1['numbers3'].astype('float')这是我的数据集的示例d = {'numbers3': ['1.9,1.4,2.0,1.5,1.1,1.3,3.7,3.8']}df1 = pd.DataFrame(data=d)我试图简单地使用删除引号df1['numbers3'] = df1['numbers3'].str.replace('"', '')但仍然得到同样的错误。请帮忙!
查看完整描述

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

你的字符串是一个数字列表;您需要先将它们分解,然后再将它们转换为浮点数。



查看完整回答
反对 回复 2022-05-24
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

您可以将包含大量数字的单个字符串列表转换为数字字符串列表,然后也将每个字符串转换为浮点数。这里不需要 Pandas,您也可以将此列表添加到 df 中。


d = {'TEXT': ['1.9,1.4,2.0,1.5,1.1,1.3,3.7,3.8']}

df1 = pd.DataFrame(data=d)

df1 = d['TEXT'][0].split(',')

floats = [x for x in map(lambda x: float(x), df1)]


查看完整回答
反对 回复 2022-05-24
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

如果你想把这个字符串变成一个浮点数列表,你首先把字符串变成一个列表,然后每个元素变成一个浮点数:


import pandas as pd

d = {'numbers3': ['1.9,1.4,2.0,1.5,1.1,1.3,3.7,3.8']}

df1 = pd.DataFrame(data=d)


df1.numbers3.apply(lambda x: x.split(',') ).apply(lambda x: [float(i) for i in x])

不过,我不完全确定这是您真正想要的。


查看完整回答
反对 回复 2022-05-24
  • 3 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号