ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [판다스] 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

    댓글

Designed by Tistory.