groupby
の後にagg
を使用すると、columns:functions
の関数が渡された場合、関数は対応する列に適用されます。それにもかかわらず、この構文はtransform
では機能しません。 transform
にいくつかの関数を適用する別の方法はありますか?パンダでの変換でいくつかの関数を適用する
のは、例を挙げてみましょう:
import pandas as pd
df_test = pd.DataFrame([[1,2,3],[1,20,30],[2,30,50],[1,2,33],[2,4,50]],columns = ['a','b','c'])
Out[1]:
a b c
0 1 2 3
1 1 20 30
2 2 30 50
3 1 2 33
4 2 4 50
def my_fct1(series):
return series.mean()
def my_fct2(series):
return series.std()
df_test.groupby('a').agg({'b':my_fct1,'c':my_fct2})
Out[2]:
c b
a
1 16.522712 8
2 0.000000 17
前の例では、agg
に異なる列に異なる関数を適用する方法を示していますが、我々はそれらを集約せずに列を変換したい場合は、agg
はもう使用できません。 。したがって:
a b c
0 1 2 3
1 1 22 90
2 2 30 50
3 1 24 2970
4 2 34 2500