2017-10-31 5 views
0

그래서이 방법이 효과가 있지만 다른 방법은 잘 모르겠습니다.팬더 시리즈 : 진리 값이 불투명합니다

값을 계산하고이를 정적 열과 비교하는 열이 있습니다.

나는이 두 함수가 print (column1> column2) 함수를 가지고 있다고 비교했을 때 좋은 일련의 True/False 값을 얻었다.

그래서 거기 노력하고 있습니다,하지만 난 다음의 경우/다른 문 같은 불평등을 통합하려고 할 때, 그것은 다음과 같은 오류 개막 :

에 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'])) 
+1

전체 시리즈에 하나의 참 또는 거짓 값이 없기 때문에. –

+0

방정식의 다른 모든 것들처럼 벡터화하지 않습니다? – a1letterword

+0

예, 벡터 라이 제이션을하고 있지만, 불린으로 가득 찬 벡터를 어떻게 처리 할 것인지 말하지 않았습니다. 죄송하지만 더 구체적인 조언을 드릴 수는 없습니다. 나는 Numpy (약간의)를 안다,이 같은 문제가 아니라 판다가 아니라. –

답변

1

apply 필요 없음 또는 람다 함수 - 당신의 전체 시리즈의 각 통해 truthiness을 확인 all()를 사용합니다.

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