pandas DataFrame调用lower()转小写报AttributeError问题咨询
错误原因
- 你调用
lower()的对象是pandas的DataFrame结构,lower()是Python原生字符串的专属方法,DataFrame本身没有内置该方法,所以触发属性不存在的报错。你预期的小写转换实际上根本没有执行成功,自然不存在「已经提前做完转换」的情况。 - 后续你调用Sastrawi的
stopwords.remove()方法时也会报错,该方法仅支持传入单个字符串参数,无法直接处理整个DataFrame。 - 你代码里写的
import str属于无效导入,Python不存在该标准库,可以直接删除。
修复代码
先完成全列小写转换,再逐行处理停用词即可:
from Sastrawi.StopWordRemover.StopWordRemoverFactory import StopWordRemoverFactory factory = StopWordRemoverFactory() stopwords = factory.create_stop_word_remover() # 取目标列 kalimat = df[['judul_name','judul_Headline']].copy() # 对字符串列做小写转换 kalimat['judul_name'] = kalimat['judul_name'].str.lower() kalimat['judul_Headline'] = kalimat['judul_Headline'].str.lower() # 逐行处理去停用词 def clean_row(row): full_text = f"{row['judul_name']} {row['judul_Headline']}" return stopwords.remove(full_text) kalimat['clean_text'] = kalimat.apply(clean_row, axis=1) print(kalimat['clean_text'])
内容的提问来源于stack exchange,提问作者anzy859
相关产品推荐
相关产品推荐

