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

Python做推特NLP情感分析报TypeError: expected string or bytes-like object求助

报错原因

TypeError: expected string or bytes-like object 是因为df['full_text']列存在非字符串类型的内容(最常见的是空值NaN、数值型数据),re.sub()方法只能处理字符串/字节类输入,拿到非合规输入就会触发报错。
除此之外你的代码还存在两处不符合需求和可运行要求的问题:

  • 未实现你提到的文本转小写逻辑
  • 最后将numpy数组赋值给df变量后调用head()会触发新报错,numpy数组没有pandas对象的head()方法
修复方案
  1. 预处理full_text列,先填充空值并强制所有内容转为字符串类型
  2. 在文本清洗函数中补充转小写逻辑
  3. 调整结果存储逻辑,避免覆盖原DataFrame
修正后可运行代码
import numpy as np
import pandas as pd
from textblob import TextBlob
import re

def clean_data(review):
    # 先强制转字符串,再转小写
    review = str(review).lower()
    # 原有正则保留,移除@、链接、特殊字符
    return ' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)", " ", review).split())

def analize_data(review):
    analysis = TextBlob(clean_data(review))
    if analysis.sentiment.polarity > 0:
        return 1
    elif analysis.sentiment.polarity == 0:
        return 0
    else:
        return -1

# 先处理full_text列的异常值
df['full_text'] = df['full_text'].fillna('').astype(str)
# 用apply方法遍历处理,结果存到新列,不覆盖原df
df['sentiment'] = df['full_text'].apply(analize_data)
# 输出前20行结果
display(df[['full_text', 'sentiment']].head(20))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:15:04