在我的输入数据中,似乎当采集数据的记录器以低功耗运行时,它引入了一些特殊字符,如“v”或“@”
我用pandas read_csv(engine='python')加载了数据集。我必须使用engine='python',否则我会收到一条错误消息:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb6 in position 2: invalid start byte
我发现了如何从数据帧中排除特殊字符:
df.var_a = df.var_a.str.replace('[#,@,&,�,{,v,?]','')
这会将“@”等特殊字符替换为“”,但我在数据框“\x”中也有此特殊字符,无法使用上面显示的代码将其删除,我收到以下错误消息:
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 24-25: truncated \xXX escape
如何从数据帧中删除“\x”
请注意
\x
用于匹配\xYY格式的十六进制字符,例如\x20如果要删除显示为特殊字符的Unicode序列,可以使用
\X
(大写字母X
而不是小写字母x
),如下所示:如果要删除十六进制值,必须指定特定值,例如要删除十六进制值\x20,可以使用:
可能无法删除某个范围内的十六进制值。您必须一个接一个地指定每个值才能删除它,尽管您可以尝试使用
\X
删除Unicode序列是否可以达到您想要的效果现有正则表达式的旁注:
注意,您不需要逗号
,
来分隔正则表达式字符类中的特殊字符另一点需要注意的是,除了要排除的字符列表中的符号之外,列表中还有一个看起来像
v
的字符。是否确实要删除字母v
?或者v
是此处错误显示的特殊符号编辑
如果要检查哪些元素不是数字,可以使用^{} 进行检查:
编辑2
如果确定应删除浮点字符以外的字符,则可以使用以下命令删除
0-9
和.
以外的字符:试试这个:
相关问题 更多 >
编程相关推荐