1. transformの有用性
transformの活用方法がいまいち想像できずに放置していました。
pysparkでWindow.partitionByを使用して便利だなと感じてpandasでもできないかな?と調べたところtransformで実現できることが分かりました。
transformの実例を示しながら整理したいと思います。
2. transformで実現できること
groupby.aggの結果をデータフレームに追加したいことが多々あります。
transformを使用しない場合には下記のような流れで実現します。
-
groupby.aggを計算した中間DataFrameを作成する
-
元DataFrameと中間DataFrameをLeft joinする。
中間DataFrameを作成するところが無駄なことと、Joinするのが面倒です。
transformを使用することでこのような加工を簡単に実現できます。
3. 実例
sample.py
import pandas as pd
from sklearn import datasets
boston = datasets.load_boston()
boston_df = pd.DataFrame(
boston.data,
columns=boston.feature_names,
)
boston_df = (
boston_df
.assign(
CRIM_SUM_BY_CHAS = (
boston_df
.groupby('CHAS')['CRIM']
.transform(
sum
)
)
)
)