python에서는 굉장히 간단한 형태로 string의 empty 여부를 확인한다.

string 자체를 bool이 들어갈 자리에 두면 값이 있는 경우 True, 빈 경우 False를 반환한다.

(strip()이랑 같이 쓰면 IsNullOrWhitespace 처럼 쓸 수 있다.)

여기에 and나 or 같은 논리연산자가 들어가면

가장 마지막에 검사된 값을 반환한다.

예를 들어,

True or 'test'는 True를 반환한다. (True만 검사하면 무조건 True)

True and 'test'는 'test'를 반환한다. ('test'까지 검사해야 True, False를 알 수 있기 때문)

False and 'test'는 False를 반환한다.(False만 검사하면 무조건 False)

 

이런 고로 논리연산자를 쓸 때 괄호를 쳐주지 않으면 제대로 인식이 되지 않는 케이스가 생긴다.

가령 df[df["test"] == test and df["test1"] == "test"] 같은 형태는

the truth value of a series is ambiguous. use a.empty a.bool() a.item() a.any() or a.all()

같은 에러가 난다.

df[(df["test"] == test) and (df["test1"] == "test")]

괄호로 묶어주면 식이 유효한 경우 에러가 사라진다.

 

numpy의 경우 and, or 대신 &, | 를 사용해야 되는 케이스가 많다.

+ Recent posts