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

我已经使用正则表达式从文本中提取了数字。

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('"', '')

但仍然得到同样的错误。请帮忙!


千巷猫影
浏览 167回答 3
3回答

翻阅古今

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

人到中年有点甜

您可以将包含大量数字的单个字符串列表转换为数字字符串列表,然后也将每个字符串转换为浮点数。这里不需要 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)]

子衿沉夜

如果你想把这个字符串变成一个浮点数列表,你首先把字符串变成一个列表,然后每个元素变成一个浮点数:import pandas as pdd = {'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])不过,我不完全确定这是您真正想要的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python