You need to enable JavaScript to run this app. 如何移除DataFrame文本列的b''编码前缀 解码得到NaN该如何解决
优惠活动
大模型
产品
解决方案
定价
更多

如何移除DataFrame文本列的b''编码前缀 解码得到NaN该如何解决

问题原因

你调用str.decode('utf-8')返回NaN的核心原因是body列的内容实际是字符串类型,而非bytes字节类型:你看到的b''是字符串本身的内容组成部分,不是Python字节对象的类型标识,针对字节序列的decode方法无法作用于字符串,因此返回空值NaN。

解决方案

分两种场景对应处理:

  • 场景1:body列是字符串类型(可通过print(df.dtypes)确认)
    直接对字符串做内容清理即可,两种常用写法:

    1. 固定截取法(适配你当前的b'xxx'标准格式)
    df['body'] = df['body'].str.slice(start=2, stop=-1)
    
    1. 正则替换法(兼容性更强,可适配部分格式不统一的行)
    df['body'] = df['body'].str.replace(r"^b'(.*)'$", r"\1", regex=True)
    
  • 场景2:body列确实是bytes类型,decode返回NaN是因为存在非UTF-8编码字符
    增加异常处理参数即可:

    # 忽略非法编码字符
    df['body'] = df['body'].str.decode('utf-8', errors='ignore')
    # 或换用兼容所有单字节的latin-1编码尝试
    df['body'] = df['body'].str.decode('latin-1')
    

处理完成后可通过print(df['body'].head())验证结果是否符合预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 08:30:03