将对象列转换为整数或浮点

2024-09-27 21:33:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据集看起来像…(这里的问题简称)

DataFrame Name = ObjectIntTest

Most of the columns/labels are varios objects

标签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和编程新手,但需要找到解决方案,使这些数据可用于逻辑回归。。。 谢谢你的帮助


Tags: to数据forwith整数逻辑intvalueerror
2条回答

ISIN似乎是一个分类特性,因此用整数表示它(您可以对其进行比较并进行算术运算)可能会导致问题

通常分类值使用一种编码技术进行编码,最流行的是一种热编码和标签编码。标签编码将每个唯一的分类值映射到一个整数(考虑到我所说的,这不是很好),而一个Hot将您的分类列替换为N列,每个列包含一个值[0,1],并表示一个可能的唯一分类值。您可能想了解更多关于here的信息

如果您的ISIN列中没有大量的唯一值,那么最好选择一个。您可以在分类列上使用pandas.get_dummies来应用一种热编码

有两种方法可以解决此问题:

  1. 使用Python字典的键值映射将int映射到string

  2. 使用单独的散列函数,如Python的内置hash。例如

>>> hash('IE00B3XXRP09')
2571740993647531361

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

相关问题 更多 >

    热门问题