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

LDA文本挖掘教程报错:ValueError: Labels not contained in axis?求助

解决LDA文本挖掘中ValueError: Labels not contained in axis的问题

嘿,作为刚入坑LDA和Pandas的初学者,碰到这个错误真的太常见了——我当初第一次做文本挖掘时也踩过一模一样的坑!咱们拆解一下问题,一步步搞定它。

错误的核心原因

你执行的data = data.drop('speech',1)在旧版Pandas里是有效的,但新版本Pandas已经修改了drop()方法的参数逻辑:第二个位置参数不再是axis,而是labels。这就导致代码把数字1当成了要删除的列名去查找,而你的数据集里根本没有叫1的列,自然就抛出ValueError: Labels not contained in axis的错误。

第一步:修复drop()代码

把删除列的代码改成以下两种写法之一(推荐第二种,更直观):

  • 显式指定axis参数:
    data = data.drop('speech', axis=1)
    
  • 使用columns参数直接指定要删除的列:
    data = data.drop(columns='speech')
    

额外验证:确认列名正确性

如果改完还是报错,先打印你的数据集列名,检查是否有拼写错误(比如大小写、空格):

print(data.columns)

确保输出里确实有'speech'这个列名——有时候手滑打错字也会导致这个错误。

第二步:正确替换为LDA预估主题

解决完删除列的问题后,给你一个更简洁的方式把LDA生成的主题加入数据集,代替教程里的循环写法(新手友好):
假设你的LDA模型ldaobj已经训练完成,我们可以直接提取每个文本的主导主题(概率最高的那个主题)并新增列到数据集中:

# 提取每个文本的主导主题编号
dominant_topics = [doc.argmax() for doc in ldaobj.doc_topic_dist]
# 把主题列加入原数据集
data['dominant_topic'] = dominant_topics

这样就完成了把speech列替换为LDA主题的操作,而且代码更易读,不容易出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:29:02