问题描述:对表格某列遍历,满足某些条件的行进后续操作。出现错误:
The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
原代码:
b['model1']='' b['model2']='' for i in range(int(len(b)-1)): if (pd.Series(b.iloc[i,0]).str.contains('/')): #锁定含‘/’的行 a['model1'] = pd.DataFrame(b.iloc[i,0].split('/'))[0:0] a['model2'] = pd.DataFrame(b.iloc[i,0].split('/'))[0:1]
在使用loc时,因为锁定的只有一列,所以dataframe会自动变成series.因为series会有默认的index,索引 传入时就会有两个因子。
d=pd.Series(b.iloc[1,0]).str.contains('/') d
然而我们需要的是bool值作为结果作为输出,所以需要对结果指向值结果。
所以原程序可以如下操作:
b['model1']='' b['model2']='' for i in range(int(len(b)-1)): #修改后添加索引指向内容,报错消失 if (pd.Series(b.iloc[i,0]).str.contains('/')[0]): #锁定含‘/’的行 a['model1'] = pd.DataFrame(b.iloc[i,0].split('/'))[0:0] a['model2'] = pd.DataFrame(b.iloc[i,0].split('/'))[0:1]