>

두 개의 열 (이름과 값)이있는 간단한 데이터 프레임 (df)이 있다고 가정하겠습니다. 이름을 기준으로 세 번째 열 (새 값)을 추가하고 싶습니다.

내가 시도했다 :

df['New Value'] = df[['Name ']].apply((lambda x: df['Value'] * 2 if x == 'John' else df['Value']) , axis=0)

이 작업을 수행하면 다음 오류가 발생합니다.

ValueError : ( 'Series의 진실 값은 모호합니다. a.empty, a.bool (), a.item (), a.any () 또는 a.all ()을 사용하십시오.', ' 색인 이름 ')

내가 이해하는 것은 x가 Series이고 문자열과 비교할 수 없다는 것입니다. 맞습니까? 그렇지 않다면 무슨 뜻입니까?

어쨌든이 문제를 어떻게 해결합니까?


  • 답변 # 1

    'Name' 만 열의 데이터 프레임에 작업을 적용하고 있습니다.  행 현명한 작업으로 작업 할 때 axis=1 를 설정하십시오.

    사용 사례에 사용해보십시오.

    df['New Value'] = df.apply(lambda x: x['Value'] * 2 if x['Name'] == 'John' else x['Value'], axis=1)
    
    

    솔루션

    In [49]: df
    Out[49]:
        Name  Value
    0   John      5
    1  Kevin      5
    In [50]: df['New Value'] = df.apply(lambda x: x['Value'] * 2 if x['Name'] == 'John' else x['Value'], axis=1)
    In [51]: df
    Out[51]:
        Name  Value  New Value
    0   John      5         10
    1  Kevin      5          5
    
    

  • 답변 # 2

    이 작업을 수행 할 수있는 위치 :

    df['New Value'] = (df['Value'] * 2).where(df['Name'] == 'John',  df['Value'])
    
    

  • 이전 python - Pyodbc 변수 쿼리
  • 다음 android - 의도 번들의 Kotlin getParcelableArray가 사용자 정의 유형으로 캐스트 할 수 없습니다