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
相关产品推荐
相关产品推荐

