St_Hakky’s blog

Data Science / Human Resources / Web Applicationについて書きます

【Python】Pandasでapply処理時に複数の値を返せるようにする

こんにちは。

いつも忘れてしまうので、書きます。

やりたいこと

Pandasで、applyの処理を書くことはよくあると思うのですが、このときに複数の値を返して、一度で複数カラムを追加したいのです。

通常、apply関数を使用して素直にやろうとすると、以下のように2行に分ければできます。

df['new1'] = df['old'].apply(lambda x: x*2)
df['new2'] = df['old'].apply(lambda x: x*4)

ただ、2行くらいならいいのですが、3行とか4行に渡ったり、そういう処理が何回もあったりすると流石にシンドイってなります。実際にやっていることは、同じカラムに対しての処理なので一回で終わらせたいんです。

なので、そういうのを無くすためにできる限り無くすために、複数の値をapplyで返したいって感じの気持ちです。

実現方法

あるカラムの値を2倍および4倍した値をカラムに追加する場合の処理については、以下のようにやります。

df[['new1', 'new2']] = df['old'].apply(lambda x: pd.Series([x*2, x*4]))

ミソは、pd.Seriesで囲ってあげることです。これだけ。


これ以外にいい方法あれば教えてください。

それでは。