>source

이 데이터 프레임이 있습니다

data = [['Tom', 16, 'True','False'], ['Nick', 19, 'False','True'], ['Juli', 17, 'True','True']] 
df = pd.DataFrame(data, columns = ['Name', 'Age', 'Writer','Artist'])

문자열 부울을 부울로 변환하고 싶습니다.

나는 시도했다

def str_to_bool(s):
    if s == 'True':
         return True
    elif s == 'False':
         return False
    else:
         raise ValueError
df[['Writer','Artist']] = df[['Writer','Artist']].apply(str_to_bool)

import ast
df[['Writer','Artist']] = df['Writer','Artist'].map(ast.literal_eval)

그러나 이들 중 어느 것도 작동하지 않았습니다.

여러 열의 유형을 한 줄로 변환 할 수 있습니까? 아니면 관련 열을 한 번에 하나씩 변환해야합니까?

  • 답변 # 1

    대체의 사전 버전을 사용할 수 있습니다.

    df = df.replace({'True': True, 'False': False})
    df
       Name  Age  Writer  Artist
    0   Tom   16    True   False
    1  Nick   19   False    True
    2  Juli   17    True    True
    dtypes
    Name      object
    Age        int64
    Writer      bool
    Artist      bool
    dtype: object
    
    
    

  • 답변 # 2

    당신은 할 수 있습니다 :

    df['Writer'].apply(eval)
    
    

    산출:

    >>> df['Writer'].apply(eval)
    0     True
    1    False
    2     True
    Name: Writer, dtype: bool
    
    

관련 자료

  • 이전 sql - 한 쿼리에서 테이블을 여러 번 조인하는 방법
  • 다음 recursion - C ++에서 다양한 컨테이너 유형 임의 중첩 반복 가능 생성기 함수 구현