見出し画像

Pandas groupby 列ごとに集計関数を変える

pd.groupby().sum()とかはよく使うものの、
列ごとにここは合計、ここは平均といった
使い分けをする方法はSQLだと容易にできるがPandasではdplyr的な記法のagg()を使うことになる。
意外と浸透していないようなので記載。

import pandas as pd
df = pd.DataFrame([{'col_0': "A", 'col_1': 1, 'col_2': 2},
                    {'col_0': "A", 'col_1': 4, 'col_2': 5},
                    {'col_0': "B", 'col_1': 7, 'col_2': 8},
                    {'col_0': "B", 'col_1': 9, 'col_2': 6}])
dfの中身
# col_1の合計、col_2の件数を取得する。
df.groupby("col_0",as_index=False).agg(sum_col_1=("col_1","sum"),count_col_2=("col_2","count"))
集計結果

他にも以下の集計等が使える。

  • mean

  • max/min

  • std


この記事が気に入ったらサポートをしてみませんか?