2017-06-15 111 views
2

我試圖通過使用不同類型的函數和參數值來減少熊貓數據框中的數據。但是,我沒有設法更改聚合函數中的默認參數。下面是一個例子:Python Pandas:將參數傳遞給函數中的agg()

>>> df = pd.DataFrame({'x': [1,np.nan,2,1], 
...     'y': ['a','a','b','b']}) 
>>> df 
    x y 
0 1.0 a 
1 NaN a 
2 2.0 b 
3 1.0 b 

下面是一個聚合功能,爲此,我想測試的b不同的值:

>>> def translate_mean(x, b=10): 
... y = [elem + b for elem in x] 
... return np.mean(y) 

在下面的代碼,我可以使用該功能的默認b值,但我想通過其他值:

>>> df.groupby('y').agg(translate_mean) 
     x 
y 
a NaN 
b 11.5 

任何想法?

回答

2

也許你可以試試在這種情況下使用apply

df.groupby('y').apply(lambda x: translate_mean(x['x'], 20)) 

現在的結果是:

y 
a  NaN 
b 21.5 
2

只是作爲參數傳遞給agg(這一點也適用apply,太)。

df.groupby('y').agg(translate_mean, b=4) 
Out: 
    x 
y  
a NaN 
b 5.5 
+2

好的!我不知道!謝啦 – Ding

相關問題