반응형
질문
다음 데이터프레임에 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
반응형
댓글