既存の列に基づいて値が選択される新しい列を作成するにはどうすればよいですか? 質問する

既存の列に基づいて値が選択される新しい列を作成するにはどうすればよいですか? 質問する

color次のデータフレームに、 のcolor='green'場合Set == 'Z'、 の場合、以外の場合となる列を追加するにはどうすればよいですかcolor='red'?

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

ベストアンサー1

選択肢が2つしかない場合は、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

条件が2つ以上ある場合は、np.select例えば、あなたcolor

  • yellowいつ(df['Set'] == 'Z') & (df['Type'] == 'A')
  • それ以外のblue場合(df['Set'] == 'Z') & (df['Type'] == 'B')
  • それ以外のpurple場合(df['Type'] == 'B')
  • さもないと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

おすすめ記事