将对象列转换为整数或浮点数
Convert Object Column to integer or float
我有一个看起来像这样的数据集...(此处的问题已缩短)。
DataFrame Name = ObjectIntTest
Most of the columns/labels are varios objects
标签 ISIN = 各种 ISIN,例如 IE00B3XXRP09、IE00BF553838、LU0950668870
为了 运行 逻辑回归,我需要将例如各种 ISIN 转换为整数
(对于 ISIN IE00B3XXRP09 和 IE00BF553838,integer/float 始终需要相同)
我尝试了各种类似这些的方法,但我只得到错误:
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 字典的键值映射将 int
映射到 string
。
使用单独的散列函数,例如 Python 的内置 hash
。例如
>>> hash('IE00B3XXRP09')
2571740993647531361
>>> type(hash('IE00B3XXRP09'))
<class 'int'>
ISIN 似乎是一个分类特征,因此用整数表示它(您可以对其进行比较和计算)可能会导致问题。
通常分类值使用一种编码技术进行编码,最流行的是 One Hot Encoding 和 Label Encoding。 Label Encoding 将每个唯一的分类值映射到一个整数(考虑到我所说的,这并不是很好),而 One Hot 将您的分类列替换为 N 列,每个列包含值 [0, 1] 之一并代表可能的唯一分类值之一价值。您可能想了解更多信息,例如 here.
如果您的 ISIN 列中没有大量唯一值,One Hot 更适合。您可以在分类列上使用 pandas.get_dummies 来应用 One Hot 编码。
我有一个看起来像这样的数据集...(此处的问题已缩短)。
DataFrame Name = ObjectIntTest
Most of the columns/labels are varios objects
标签 ISIN = 各种 ISIN,例如 IE00B3XXRP09、IE00BF553838、LU0950668870
为了 运行 逻辑回归,我需要将例如各种 ISIN 转换为整数 (对于 ISIN IE00B3XXRP09 和 IE00BF553838,integer/float 始终需要相同)
我尝试了各种类似这些的方法,但我只得到错误:
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 字典的键值映射将
int
映射到string
。使用单独的散列函数,例如 Python 的内置
hash
。例如
>>> hash('IE00B3XXRP09')
2571740993647531361
>>> type(hash('IE00B3XXRP09'))
<class 'int'>
ISIN 似乎是一个分类特征,因此用整数表示它(您可以对其进行比较和计算)可能会导致问题。
通常分类值使用一种编码技术进行编码,最流行的是 One Hot Encoding 和 Label Encoding。 Label Encoding 将每个唯一的分类值映射到一个整数(考虑到我所说的,这并不是很好),而 One Hot 将您的分类列替换为 N 列,每个列包含值 [0, 1] 之一并代表可能的唯一分类值之一价值。您可能想了解更多信息,例如 here.
如果您的 ISIN 列中没有大量唯一值,One Hot 更适合。您可以在分类列上使用 pandas.get_dummies 来应用 One Hot 编码。