使用np.where触发TypeError:传入6个参数但仅支持1-3个
解决np.where()的TypeError参数问题
错误原因
你给np.where()传入了6个位置参数,但该函数最多仅接受3个位置参数(条件、满足条件的返回值、不满足条件的返回值),因此触发TypeError。np.where()本身只支持二元判断,无法一次性处理多分类的映射逻辑。
解决方案
结合你代码里的参数推测,你需要实现的是Sentimen值的多分类映射(Positif→1、Negatif→0、Netral→-1),可以用以下两种方法解决:
方法1:嵌套np.where()
通过嵌套实现多分支判断:
label = np.where(df['Sentimen'] == 'Positif', 1, np.where(df['Sentimen'] == 'Negatif', 0, -1)) y = label y[45:75]
- 第一层判断:若
Sentimen为Positif,返回1; - 第二层判断:若不为
Positif,再判断是否为Negatif,返回0; - 剩余情况(即
Netral)返回-1。
方法2:使用pandas的map()方法(更直观)
创建映射字典直接对列做转换,适合多分类场景:
sentiment_map = {'Positif': 1, 'Negatif': 0, 'Netral': -1} label = df['Sentimen'].map(sentiment_map) y = label y[45:75]
这种方法可读性更高,后续新增类别时只需修改映射字典即可。
内容的提问来源于stack exchange,提问作者Reno Hanjan
相关产品推荐
相关产品推荐

