一つの値を返す関数に対してのapply
これは普通のapply。わざわざ見せるまでもないかもしれないが、こんな感じ
普通のapply
def some_function(x):
return x*2
data['new_column'] = data['existing_column'].apply(some_function)
このsome_functionで複数の値を返したいとする。そんな時にわざわざ関数を2つ作ってapplyを2回使うのはもったいない気がする。
もったいないコード
def some_function1(x):
return x*2
def some_function2(x):
return x/2
data['new_column1'] = data['existing_column'].apply(some_function1)
data['new_column2'] = data['existing_column'].apply(some_function2)
複数の値を返す関数に対するapply
2つの値を返す関数に対して、データフレーム側でそれぞれ新しい列を生成したい場合はこうするとスマートに書ける。
2つの値を返す関数に対するapply
def some_function1(x):
return pd.Series([x*2, x/2])
data[['new_column1', 'new_columns2']] = data['existing_column'].apply(some_function)
値を返す関数の方でreturnのときにpd.Seriesで囲んでやることと、受ける側のデータフレームで列をリスト形式で指定するのがミソ。