Python 熊猫系列:布尔值的真值不明确

Python 熊猫系列:布尔值的真值不明确,python,pandas,series,calculated-columns,Python,Pandas,Series,Calculated Columns,所以我不确定为什么这是一种方式,而不是另一种方式 我有一个计算值并将其与静态列进行比较的列 当我比较这两个函数printcolumn1>column2时,我得到了一系列很好的真/假值 所以它在那里工作,但当我尝试将相同的不等式合并到if/else语句中时,它引发了以下错误: ValueError:序列的真值不明确。使用a.empty、a.bool、a.item、a.any或a.all 为什么呢 代码如下: def airportcheck(x1, y1): point1 = line(l

所以我不确定为什么这是一种方式,而不是另一种方式

我有一个计算值并将其与静态列进行比较的列

当我比较这两个函数printcolumn1>column2时,我得到了一系列很好的真/假值

所以它在那里工作,但当我尝试将相同的不等式合并到if/else语句中时,它引发了以下错误:

ValueError:序列的真值不明确。使用a.empty、a.bool、a.item、a.any或a.all

为什么呢

代码如下:

def airportcheck(x1, y1):
    point1 = line(line1m, line1b, x1, y1)
    point2 = line(line2m, line2b, x1, y1)
    point3 = line(line3m, line3b, x1, y1)
    point4 = line(line4m, line4b, x1, y1)
    if point3>=y1:
        print(1)
    print(point3>y1)
    #if point1 > y1 and point3 > y1 and point4 < y1 and point2 < y1:
    #    return 1
    #else:
    #    return 0


df_data['Airport'] =(airportcheck(df_data['Pickup_longitude'], df_data['Pickup_latitude']))
不需要应用或lambda函数-只需使用它来检查整个系列的真实性

if (point1 > y1).all() and \
   (point3 > y1).all() and \
   (point4 < y1).all() and \
   (point2 < y1).all():
    # ...

因为一个完整的序列没有一个真值或假值。所以它没有像对方程中的其他所有东西那样对它进行向量化?是的,它对它进行向量化,但你没有告诉它你希望如何处理一个充满布尔值的向量。对不起,我不能给你更具体的建议。我知道一点Numpy,在那里也会发生同样的问题,但不是熊猫。没问题。谢谢我很困惑,因为除了引入if/else时,它还很好地矢量化了所有内容。我将尝试使用pandas apply/lambda组合来让它工作。