如何将字符串数据项重新编码为数值或十进制值?

2024-07-07 08:09:18 发布

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

我想在excel工作表中重新编码数据条目,然后用它来使用python执行其他分析。因此,我希望将这些字符串条目重新编码为数值或十进制值

这是条目的外观:

00000000-0000-0000-0000-000000000000|16|Company Name||123 Address|Suite 123|City|ST|12345|Notes|Name|123 Anywhere Road||Notes|ST|12345|00000000-0000-0000-0000-000000000000|1234-1234-1|123456||||

我希望将整个列转换为数值或十进制值。有什么帮助吗


Tags: 字符串name目的city编码address条目excel
2条回答

虽然这个问题不是很清楚,但以下几点会让你明白:

此代码将所有数字单元格(在竖线“|”处拆分)转换为数字并保存到列表中

str="00000000-0000-0000-0000-000000000000|12|Company||123 Address|Suite 123|City|ST|12345|Notes|Name|123 Anywhere Road||Notes|ST|12345|00000000-0000-0000-0000-000000000000|1234-1234-1|123456||||"

cells=[int(x) if x.isnumeric() else x for x in str.split('|')]
print (cells)

输出为:

['00000000-0000-0000-0000-000000000000', 12, 'Company', '', '123 Address', 'Suite 123', 'City', 'ST', 12345, 'Notes', 'Name', '
123 Anywhere Road', '', 'Notes', 'ST', 12345, '00000000-0000-0000-0000-000
000000000', '1234-1234-1', 123456, '', '', '', '']

我们可以看到,12、12345、12345、123456是数字的,打印时没有引号

如果需要转换其他字符串中的数字,请在空格或连字符处分割单个字符串以进行转换。为了将十六进制字符串转换为十进制数,您可以为int()提供基本参数16,它将正确地转换它,例如

int ("10", 16)

结果正确到小数点16

阿尔沙德的答案可以应用于大多数专栏,我认为这是你首先想要的。但是,有些列包含名称或类似的内容。在这些情况下,将这些字符串转换为数值的常用方法是编码。例如,值为“Pantherx稀有”的列可能包含其他此类名称。要对此进行编码,必须首先澄清值之间是否存在顺序。如果有,顺序编码器可能会派上用场。如果没有,我想到的就是一个热编码。这些编码器可以在scikit学习库中找到。看看this page

相关问题 更多 >