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

Python报错‘expected string or bytes-like object’原因排查求助

问题解析与解决方案

问题场景

你运行以下代码时触发「expected string or bytes-like object」错误:

数据表格截图

代码:

### Numerical data for the algorithm, NP_xx/XP_xx are protein identifiers 
#from RefSeq database
processed_numerical = processed.loc[:,[x for x in processed.columns if bool (re.search("NP_|XP_",x)) == True]]

错误原因

re.search() 仅能处理字符串/字节类型的输入,但你的DataFrame列名中存在非字符串类型的元素(比如数字、空值或其他类型),导致正则匹配无法执行,抛出类型错误。

修复方案

方案1:先统一将列名转为字符串类型

import re
# 把所有列名强制转为字符串
processed.columns = processed.columns.astype(str)
# 执行筛选(可简化布尔判断)
processed_numerical = processed.loc[:, [x for x in processed.columns if re.search("NP_|XP_", x)]]

方案2:在筛选时先判断列名类型

import re
# 仅对字符串类型的列名执行正则匹配
processed_numerical = processed.loc[:, [x for x in processed.columns if isinstance(x, str) and re.search("NP_|XP_", x)]]

补充说明

从你提供的表格截图来看,存在Unnamed: 0这类系统生成列,不排除还有数字索引的列,这些非字符串列名就是错误的触发源,处理后即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:04:58