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

AttributeError: 'DataFrame'对象无'DataFrame'属性 Python情感分析报错排查

报错根因

AttributeError: 'DataFrame' object has no attribute 'DataFrame'的触发原因非常明确:你已经将一个已实例化的pandas DataFrame对象命名为tweet,而DataFrame是pandas库的顶层构造类,不属于某个已存在的DataFrame实例的属性或方法,因此调用tweet.DataFrame()会抛出属性不存在的错误。

解决方法

按照你要生成包含原文本、清洗后文本、情感结果的新DataFrame的需求,可按以下步骤修改代码:

  • 首先确认pandas导入方式,创建新DataFrame必须调用pandas库下的DataFrame类,常规导入用法如下:
import pandas as pd
# 情感判定函数需要依赖TextBlob,补充导入
from textblob import TextBlob
  • 如果你要基于已有的名为Tweet的原始数据集加工,直接对原始列调用你写好的处理函数即可,不需要手动传入text创建:
# 对原推文文本做清洗、词干提取
Tweet['clean_tweets'] = Tweet['full_text'].apply(cleanText).apply(stem)
# 计算情感值,这里需要先将清洗后的文本转为TextBlob对象才能读取sentiment属性
Tweet['sentiment'] = Tweet['clean_tweets'].apply(lambda x: sentiment(TextBlob(x)))
# 抽取目标列生成新的tweet2
tweet2 = Tweet[['full_text', 'clean_tweets', 'sentiment']].copy()
  • 如果你是要把三个独立的列表(原文本列表、清洗后文本列表、情感结果列表)合并为新DataFrame,正确写法如下:
# 假设full_text_list、clean_tweets_list、sentiment_list是你提前处理好的三个等长列表
tweet2 = pd.DataFrame({
    'full_text': full_text_list,
    'clean_tweets': clean_tweets_list,
    'sentiment': sentiment_list
})

额外注意事项

  • Python对变量名大小写敏感,你提到原始数据集命名为大写开头的Tweet,写代码时注意不要和小写的tweet混淆,避免误调用对象。
  • 你写的sentiment函数中直接调用了cleaned_text.sentiment.polarity,注意传入该函数的参数必须是TextBlob实例,不能直接传字符串,否则会触发新的属性错误。

内容的提问来源于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.24 23:27:03