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

如何使用pandas apply替代嵌套循环处理pos列调用get_sentiment函数

你触发ValueError: too many values to unpack (expected 2)的核心问题是列表推导式多写了一层不必要的嵌套循环。pos列的每一行值本身就是由二元组组成的列表,例如[(No, DT), (thank, NN), (you, PRP)],你原来的写法[get_sentiment(x,y) for j in k for (x,y) in j]相当于先遍历列表拿到每个二元组j,再遍历二元组内部的单个元素,尝试把单个字符串解包成x、y两个变量,自然会报错。


写法1:简洁lambda版(符合Pandas风格)

直接遍历pos每行的二元组列表即可,如果get_sentiment本身对部分词性组合返回空列表,就会和你给出的预期输出格式完全匹配:

df['score'] = df['pos'].apply(lambda pos_list: [get_sentiment(word, tag) for word, tag in pos_list])

写法2:独立函数版(更易调试维护)

如果后续需要调整得分计算逻辑,建议把逻辑抽成单独函数:

def get_sentiment_for_pos(pos_seq):
    res = []
    for word, pos_tag in pos_seq:
        res.append(get_sentiment(word, pos_tag))
    return res

df['score'] = df['pos'].apply(get_sentiment_for_pos)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:39:04