[英]Convert Object Column to integer or float
我有一個看起來像這樣的數據集......(這里的問題縮寫)。
DataFrame Name = ObjectIntTest
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 和編程的新手,但需要找到使這些數據可用於邏輯回歸的解決方案……感謝您的幫助。
有兩種方法可以解決這個問題:
使用 Python 的字典到 map 和int
到string
的鍵值映射。
使用單獨的散列 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.