## 概要
pandasのDataFrameで、ある項目でgroupbyした後にその合計値で上位のものを取得する実装をメモ書きします。
前提
- 使用したpandasのバージョンは
2.2.3
です。
対応方針
- groupbyで合計値を算出します。groupbyの使い方についてはPandas|groupbyの使い方の記事が参考になります。
- groupbyで合計値を算出した後に、
nlargest
関数で上位のものを取得します。nlargestの使い方についてはpandasでn個の最大値・最小値を取得(nlargest, nsmallest)が参考になります。
実装サンプル
以下のサンプルを実行すると、group1: B value: 150
、group1: A value: 100
が出力されます。
import pandas as pd
# サンプルデータの作成
df = pd.DataFrame(
{
"group1": ["A", "A", "B", "B", "C", "A", "D", "B", "E"],
"group2": ["X", "Y", "X", "Y", "X", "S", "C", "A", "K"],
"value": [10, 20, 30, 40, 50, 70, 70, 80, 9],
}
)
# group1でgroupbyして上位2件を取得
grouped = df.groupby("group1")["value"].sum().nlargest(2)
# 対象のgroupとvalueを出力
for i, v in grouped.items():
print("group1: ", i, "value: ", v)