Pandas GroupBy.agg() を使用した同じ列上の複数の集計
pandas では、GroupBy.agg() を使用して便利な集計を行うことができます。各列に関数を適用してデータを作成します。ただし、同じ列に異なる関数を適用する場合は、agg() を複数回呼び出す必要があります。
従来の (間違った) アプローチ:
直感的に簡単なアプローチは次のとおりです。 be:
df.groupby("dummy").agg({ "returns": f1, "returns": f2 })
残念ながら、重複によりエラーが発生しますkey.
解決策:
agg() は辞書を必要とするため、簡単な解決策は、列名と関数のリストを含む辞書を作成することです。
df.groupby("dummy").agg({ "returns": [f1, f2] })
これにより、両方の集計の出力を含むマルチインデックス DataFrame が生成されます。
例:
次のデータフレームを考えます:
import pandas as pd import datetime as dt import numpy as np pd.np.random.seed(0) df = pd.DataFrame({ "date": [dt.date(2012, x, 1) for x in range(1, 11)], "returns": 0.05 * np.random.randn(10), "dummy": np.repeat(1, 10) })
平均と合計の両方を「returns」列に適用するには:
df.groupby("dummy").agg({ "returns": ["mean", "sum"] })
これにより次のものが生成されます:
returns mean sum dummy 1 0.036901 0.369012
以上がPandas GroupBy.agg() を使用して同じ列で複数の集計を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。