You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将DataFrame字符列转整数时遇TypeError问题求助

问题分析与解决方法

错误原因

你遇到的问题核心在于:DataFrame中存储的\b、\u0010是字面量字符串(比如\b实际是由\和b两个字符组成的字符串),而非Python解析后的单个Unicode转义字符。

当你直接在代码里写x = '\b'时,Python会在编译阶段自动将这个转义序列解析为单个退格字符(长度为1),所以ord(x)能正常返回8;但从CSV文件读取数据时,这些转义序列是以原始文本形式保存的,每个元素都是多字符字符串,自然触发ord()的类型错误。

解决方案

需要先把这些字面量转义字符串解码为实际的Unicode字符,再调用ord()转换为整数,以下两种方法都可以实现:

方法1:使用ast.literal_eval安全解析

import ast

ft_x['keyCode'] = ft_x['keyCode'].apply(lambda val: ord(ast.literal_eval(f'"{val}"')))

ast.literal_eval会将字符串字面量解析为对应的Python对象,比如把"\b"转换成单个退格字符,之后ord()就能正常获取其Unicode编码值。

方法2:使用codecs.decode处理转义序列

import codecs

ft_x['keyCode'] = ft_x['keyCode'].apply(lambda val: ord(codecs.decode(val, 'unicode_escape')))

unicode_escape编码格式会将字面量转义序列解码为对应的Unicode字符,比如把\u0010转成对应控制字符,处理后即可用ord()转换。

验证效果

处理后可以检查结果:

print(ft_x.loc[33, 'keyCode'])  # 输出8

内容的提问来源于stack exchange,提问作者Tomat0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:42:14