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

ARFF文件导入Python后数据出现'b'前缀问题咨询

问题解答:ARFF加载后字符串带b'前缀的原因与解决方法

这是个很常见的小问题,别担心!我来给你解释清楚:

为什么会出现b'前缀?

scipy的arff.loadarff()函数在读取ARFF文件时,默认会把文件里的字符串类型字段解析成Python的bytes对象(字节类型),所以在DataFrame里显示的时候就会带上b'前缀——这并不是原文件里有这个前缀,只是scipy处理ARFF文本字段的默认行为导致的。

怎么解决?

你只需要把这些bytes对象转换成普通的字符串类型就可以了,有两种简单的方法:

方法1:批量处理所有字符串列

如果不确定哪些列是字符串类型,可以用apply()遍历所有列,自动识别并转换:

import pandas as pd
from scipy.io import arff

# 加载ARFF文件
datos, meta = arff.loadarff(open('selectividad.arff', 'r'))
d = pd.DataFrame(datos)

# 将所有bytes类型的列转为utf-8字符串
d = d.apply(lambda col: col.str.decode('utf-8') if col.dtype == 'object' else col)

# 现在再查看就正常了
print(d.head())

方法2:单独处理指定列

如果你明确知道哪些列是字符串类型,可以单独对这些列进行转换,效率会更高一点:

# 假设你的字符串列叫'nombre'和'asignatura'
d['nombre'] = d['nombre'].str.decode('utf-8')
d['asignatura'] = d['asignatura'].str.decode('utf-8')

处理完成后,再调用d.head()查看,b'前缀就会消失,显示的内容和原ARFF文件里的完全一致啦!

内容的提问来源于stack exchange,提问作者Javier Lopez Tomas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:07:00