ユーザー定義関数pct
をPandas agg
メソッドに渡そうとしていますが、その関数のみを渡せば機能しますが、関数の定義に辞書形式を使用していますが、その理由を誰か知っていますか?
import pandas as pd
df = pd.DataFrame([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]],
columns=['A', 'B', 'C'])
pct = lambda x: len(x)/len(df)
df.groupby('A').agg(pct)
期待通りに戻る
B C
A
1 0.333333 0.333333
4 0.333333 0.333333
7 0.333333 0.333333
だが
aggs = {'B':['pct']}
df.groupby('A').agg(aggs)
次のエラーを返します。
AttributeError: 'SeriesGroupBy' object has no attribute 'pct'
文字列'pct'
があり、変数pct
が必要です-''
を削除してラムダ関数:
aggs = {'B':pct}
print(df.groupby('A').agg(aggs))
B
A
1 0.333333
4 0.333333
7 0.333333