본문 바로가기
Python/Python FAQ

Python 기존 열을 기반으로 값을 선택하여 새로운 열을 생성하는 방법은 무엇인가요?, How do I create a new column where the values are selected based on existing columns?

by 베타코드 2023. 10. 25.
반응형

질문


다음 데이터프레임에 color 열을 어떻게 추가하면, Set == 'Z'인 경우에는 color='green'이고, 그렇지 않은 경우에는 color='red'이 되도록 할 수 있을까요?

   Type  Set
1     A    Z
2     B    Z           
3     B    X
4     C    Y

답변


만약 두 가지 선택지만 있다면 np.where를 사용하세요:

df['color'] = np.where(df['Set']=='Z', 'green', 'red')

예를 들어,

import pandas as pd
import numpy as np

df = pd.DataFrame({'Type':list('ABBC'), 'Set':list('ZZXY')})
df['color'] = np.where(df['Set']=='Z', 'green', 'red')
print(df)

결과는 다음과 같습니다:

  Set Type  color
0   Z    A  green
1   Z    B  green
2   X    B    red
3   Y    C    red

만약 세 가지 이상의 조건이 있다면 np.select를 사용하세요. 예를 들어, color가 다음과 같을 때:

  • (df['Set'] == 'Z') & (df['Type'] == 'A')인 경우 yellow
  • (df['Set'] == 'Z') & (df['Type'] == 'B')인 경우 blue
  • (df['Type'] == 'B')인 경우 purple
  • 그 외의 경우 black

다음을 사용하세요:

df = pd.DataFrame({'Type':list('ABBC'), 'Set':list('ZZXY')})
conditions = [
    (df['Set'] == 'Z') & (df['Type'] == 'A'),
    (df['Set'] == 'Z') & (df['Type'] == 'B'),
    (df['Type'] == 'B')]
choices = ['yellow', 'blue', 'purple']
df['color'] = np.select(conditions, choices, default='black')
print(df)

결과는 다음과 같습니다:

  Set Type   color
0   Z    A  yellow
1   Z    B    blue
2   X    B  purple
3   Y    C   black
반응형

댓글