Pandas使用If / Then / Else语句在循环中抛出错误

时间:2017-05-27 19:56:50

标签: python loops pandas if-statement

我发现了一个奇怪的错误,我无法弄明白。

希望得到一些帮助。

我的代码中有一个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().

我无法隔离错误来源。

任何帮助/见解表示赞赏。

提前致谢。

1 个答案:

答案 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':