我发现了一个奇怪的错误,我无法弄明白。
希望得到一些帮助。
我的代码中有一个if语句,如下所示:
if my_df.ix[my_df['SOMEINTEGER'] == another_df.ix[i,'SOMECOMPARABLEINTEGER'],'SOMECOLUMN'] == 'I':
*** DO SOMETHING ***
i+=1
本声明的作用是选择my_df中的行' SOMEINTEGER'等于another_df.ix[i,'SOMECOMPARABLEINTEGER']
中的整数值,并检查' SOMECOLUMN'中的列值。在my_df中等于'我'
如果我将if语句作为单行代码运行,并且值i设置为对应于数据帧索引值的整数,则它可以工作。
如果我在较大的迭代中包含此if语句(并且同样地将递增i移出以使其正确递增,则会出现以下错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我无法隔离错误来源。
任何帮助/见解表示赞赏。
提前致谢。
答案 0 :(得分:0)
答案包含在这篇文章中:
Evaluating pandas series values with logical expressions and if-statements
我猜,这是一个重复的问题(尽管我只是巧合)在经过大量搜索之后偶然发现了这个问题。显然这个问题是熊猫的特点。以这种方式用Pandas构造的if语句产生一个Pandas系列对象。修复方法是将.any()
添加为:
if my_df.ix[my_df['SOMEINTEGER'] == another_df.ix[i,'SOMECOMPARABLEINTEGER'],'SOMECOLUMN'].any() == 'I':