【问题标题】:Stemming Pandas Dataframe 'float' object has no attribute 'split'Stemming Pandas Dataframe 'float' 对象没有属性 'split'
【发布时间】:2026-01-12 10:10:01
【问题描述】:
import pandas as pd
from nltk.stem import PorterStemmer, WordNetLemmatizer
porter_stemmer = PorterStemmer()

df = pd.read_csv("last1.csv",sep=',',header=0,encoding='utf-8')

df['rev'] = df['reviewContent'].apply(lambda x : filter(None,x.split(" ")))

Dataset

我正在尝试阻止我的数据框。在标记化时,我收到此错误

df['rev'] = df['reviewContent'].apply(lambda x : filter(None,x.split(" ")))

AttributeError: 'float' 对象没有属性 'split'

在使用 Stemming 时,我也遇到了浮动问题

df['reviewContent'] = df["reviewContent"].apply(lambda x: [stemmer.stem(y) for y in x])

TypeError: 'float' 对象不可迭代

我能做什么?

【问题讨论】:

  • 您的数据在哪里?你的预期输出是什么?您的代码不足以提供帮助。
  • 这是一个yelp假评论的数据集。我试图阻止我的整个数据集。我也应该上传数据集吗??
  • 前5行怎么样?
  • 我编辑了帖子并添加了数据集的照片。够了吗?

标签: python pandas dataframe stem


【解决方案1】:

在对数据进行标记时,您不需要 apply 调用。 str.split 应该没问题。此外,您可以拆分多个空格,因此您不必寻找空字符串。

df['rev'] = df['reviewContent'].astype(str).str.split()

您现在可以像以前一样运行您的词干分析器:

df['rev'] = df['rev'].apply(lambda x: [stemmer.stem(y) for y in x])

【讨论】:

  • 很抱歉出现另一个错误:UnicodeEncodeError: 'ascii' codec can't encode characters in position 79-80: ordinal not in range(128) 我必须做以下事情来克服错误:导入sys reload(sys) sys.setdefaultencoding('utf8') 可以吗?
  • @AshfaqAliShafin 是的,没关系。万事如意!
【解决方案2】:

我们也可以这样写

df['rev'] = df['rev'].astype(str).apply(lambda x: stemmer.stem(x))

【讨论】:

    最近更新 更多