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

如何将某些特定列转换为浮动?

如何将某些特定列转换为浮动?

九州编程 2023-01-04 11:06:49
我正在编写一个从 .data 文件(它是 iris.data)获取信息的代码,我有这个代码:lines=file_2.readlines()list_2=[]for k in range(len(lines)):    lines[k]=lines[k][0:len(lines[k])-1]    list_2.append(lines[k].split(","))print(list_2)file_2.close()结果是这样的:[['5.1', '3.5', '1.4', '0.2', 'Iris-setosa'], ['4.9', '3.0', '1.4', '0.2', 'Iris-setosa'].....[ +147 lists]]我的问题是,有没有一种方法可以使结果像这样:(也许将每个列表的前 4 列转换为浮点数(?))[[5.1, 3.5, 1.4, 0.2, 'Iris-setosa'][4.9, 3.0, 1.4, 0.2, 'Iris-setosa']....]
查看完整描述

3 回答

?
jeck猫

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

您可以定义如下函数:


def convert(item):

    try:

        return float(item)

    except ValueError:

        return item

然后在列表理解中调用它,您可以将其附加到list_2列表中。


顺便说一句,我怀疑您这样做 ->是为了从您正在阅读的文件的每一行中lines[k] = lines[k][0:len(lines[k]) - 1]删除尾随的换行符 ( )。\n更简洁的方法如下:


lines = file_2.read().splitlines()

file_2.close()


list_2 = []

for line in lines:

    list_2.append([convert(item) for item in line.split(",")])


查看完整回答
反对 回复 2023-01-04
?
达令说

TA贡献1821条经验 获得超6个赞

我建议将您的文件保存为 .csv 格式并将其加载为熊猫数据框。大多数机器学习库都可以很好地与 panda 数据框配合使用,您可能应该使用它。


您还可以在此处下载 .csv 文件:https ://www.kaggle.com/uciml/iris


但是对于你的问题:


df = pd.DataFrame(list_2, columns = ['a', 'b', 'c', 'd', 'Species'])

df = df.astype({"a": float, "b": float, "c": float, "d": float})

list_2 = list(df.values)


查看完整回答
反对 回复 2023-01-04
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

一个基本的解决方案是遍历列表以将值转换float为如下所示,


l1=[['5.1', '3.5', '1.4', '0.2', 'Iris-setosa'], ['4.9', '3.0', '1.4', '0.2', 'Iris-setosa']]

for i in range(len(l1)):

    for j in range(4):

        try:

            l1[i][j]=float(l1[i][j])

        except:

            print("not a float value")


print(l1)

输出:


[[5.1, 3.5, 1.4, 0.2, 'Iris-setosa'], [4.9, 3.0, 1.4, 0.2, 'Iris-setosa']]

但是这个解决方案的问题是,随着列表长度的增加,它需要更多的时间。该解决方案对于较小的列表将有效地工作


查看完整回答
反对 回复 2023-01-04
  • 3 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信