簡體   English   中英

將 Object 列轉換為 integer 或浮點數

[英]Convert Object Column to integer or float

我有一個看起來像這樣的數據集......(這里的問題縮寫)。

DataFrame Name = ObjectIntTest

大多數列/標簽是 varios 對象

Label ISIN = 各種 ISIN,例如 IE00B3XXRP09、IE00BF553838、LU0950668870

例如,要運行邏輯回歸,我需要將各種 ISIN 轉換為整數(對於 ISIN IE00B3XXRP09 和 IE00BF553838,整數/浮點數始終需要相同)

我嘗試了類似這些的各種方法,但我只得到錯誤:

ObjectIntTest['ISIN'] = ObjectIntTest.ISIN.astype(int) = ValueError: invalid literal for int() with base 10: 'IE00B3XXRP09'

ObjectIntTest['ISIN'] = ObjectIntTest['ISIN'].astype(float) = ValueError: could not convert string to float: 'IE00B3XXRP09'

ObjectIntTest['ISIN'] = ObjectIntTest['ISIN'].astype(str).astype(int) = ValueError: invalid literal for int() with base 10: 'IE00B3XXRP09'

ObjectIntTest = pd.to_numeric(ObjectIntTest['ISIN']) = ValueError: Unable to parse string "IE00B3XXRP09" at position 0

抱歉,我是 python 和編程的新手,但需要找到使這些數據可用於邏輯回歸的解決方案……感謝您的幫助。

有兩種方法可以解決這個問題:

  1. 使用 Python 的字典到 map 和intstring的鍵值映射。

  2. 使用單獨的散列 function 例如 Python 的內置hash 例如。

>>> hash('IE00B3XXRP09')
2571740993647531361

>>> type(hash('IE00B3XXRP09'))
<class 'int'>

ISIN 似乎是一個分類特征,因此用 integer(您可以對其進行比較和計算)表示它可能會導致問題。

通常分類值使用其中一種編碼技術進行編碼,最流行的是 One Hot Encoding 和 Label Encoding。 Label 編碼將每個唯一的分類值映射到 integer (考慮到我所說的,這並不是很好),而 One Hot 用 N 列替換您的分類列,每個列包含值 [0, 1] 之一並代表可能的唯一分類之一價值。 您可能想了解更多信息,例如這里

如果您的 ISIN 列中沒有大量唯一值,One Hot 更適合。 您可以在分類列上使用pandas.get_dummies來應用 One Hot 編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM