系列的真值含糊不清:使用

时间:2018-11-07 05:18:47

标签: python pandas

我收到一条错误提示

  

ValueError:对于if,系列的真值不明确   条件。

具有以下功能:

for i , row in train_news.iterrows():
if train_news.iloc[:,0].isin(['mostly-true','half-true','true']):
    train_news.iloc[:,0] = "true"
else :
    train_news.iloc[:,0] = "false"

1 个答案:

答案 0 :(得分:0)

问题出在您的if语句中-

if train_news.iloc[:,0].isin(['mostly-true','half-true','true'])

考虑一下它的作用-

假设train_news.iloc[:,0]看起来像这样-

mostly-true
not-true
half-true

现在,如果您执行train_news.iloc[:,0].isin(['mostly-true','half-true','true']),这将迭代检查列表['mostly-true','half-true','true']中是否存在每个元素

因此,这将产生另一个pandas.Series,看起来像这样-

True
False
True

python中的if语句是一个简单的表达式,它期望一个bool值,而您只是通过提供一堆布尔值来混淆它。因此,您最终需要根据自己的需要使用.all().any()(这些是通常要做的事情)