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

如何将Pandas apply中Sastrawi词干提取Lambda改写为普通函数并修复报错

问题原因

你改写后的函数存在2个核心逻辑错误,和df['tweets_stopwords']的格式本身无关:

  • 你混淆了apply()传入函数的参数:df['列名'].apply(函数)会把该列的每个单元格值逐个传入函数,而不是把整个列传入。你在函数内部错误遍历了整个df['tweets_stopwords']列,导致每次传入的单个单元格列表(你定义的参数stemming)被当做整体传入stemmer.stem()方法,而该方法要求接收字符串,所以抛出类型错误。
  • 你在每次调用函数时都重复创建Stemmer实例,会严重拖慢运行效率,完全没必要。

修复后代码

from Sastrawi.Stemmer.StemmerFactory import StemmerFactory

# 全局创建一次stemmer即可,不需要重复初始化
factory = StemmerFactory()
stemmer = factory.create_stemmer()

def stemmer_remover(word_list):
    # 传入的word_list就是单个单元格的分词列表,直接遍历它就行
    return [stemmer.stem(word) for word in word_list]

df['tweets_stemming'] = df['tweets_stopwords'].apply(stemmer_remover)

可选兼容逻辑

如果你的df['tweets_stopwords']列存在空值或者非列表格式的脏数据,可以加一层判断避免报错:

def stemmer_remover(word_list):
    if not isinstance(word_list, list):
        return []
    return [stemmer.stem(word) for word in word_list if isinstance(word, str)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:39:02