-
[판다스] The truth value of a Series is ambiguous 에러 해결기타 2021. 9. 29. 10:36반응형
The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all() 라는 에러가 뜰 때가 있다.
주로 판다스에서 데이터프레임의 비교연산을 할 때 일어나는데
and, or 대신에 &와 |를 쓰면 된다고 한다.
그런데 나의 경우 <, >, == 연산에서도 이런 에러가 뜰 때가 있었다.
일반적인 파이썬 코딩처럼 비교연산을 하려 했기 때문인 것 같다.
예를 들어,
for i in df.index: if df.loc[i]['data1'] > df.loc[i]['data2']: print('data1 > data2')
이런식으로 하면 에러가 뜬다.
그래서 판다스스럽게 비교연산을 해야한다.
1. 만약 주식 가격 데이터에서 종가가 시가보다 높은 날을 찾고 싶다면, 단순하게
compare = df['종가'] > df['시가'] compare
라고 작성하면 모든 행에 대해서 조건을 비교하고 부울로 값이 반환된다
''' Date 2013-12-27 00:00:00 True 2013-12-28 00:00:00 False 2013-12-29 00:00:00 False 2013-12-30 00:00:00 True 2013-12-31 00:00:00 False ... 2021-09-25 00:00:00 False 2021-09-26 00:00:00 True 2021-09-27 00:00:00 False 2021-09-28 00:00:00 False 2021-09-29 10:00:00 True Length: 2744, dtype: bool '''
여기서 참인 값의 개수와 거짓인 값의 개수를 가져오려면 value_count()메서드를 쓰면 된다.
compare.value_counts()[1] # True인 값의 개수 compare.value_counts()[0] # False인 값의 개수
반응형'기타' 카테고리의 다른 글
파이썬 Pandas 연습문제 공유 (0) 2021.09.07