亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將某些特定列轉換為浮動?

如何將某些特定列轉換為浮動?

九州編程 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 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號