LoginSignup
53
32

More than 5 years have passed since last update.

pandasのapplyで複数の値を返す

Last updated at Posted at 2017-12-11

一つの値を返す関数に対しての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で囲んでやることと、受ける側のデータフレームで列をリスト形式で指定するのがミソ。

53
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
53
32