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}])
# 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
この記事が気に入ったらサポートをしてみませんか?