在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