我已经使用正则表达式从文本中提取了数字。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贡献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)]

子衿沉夜
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])
不过,我不完全确定这是您真正想要的。
添加回答
举报
0/150
提交
取消