2017-06-15 11 views
2

異なる種類の関数と引数値を使用して、pandasデータフレームのデータを縮小しようとしています。しかし、集計関数のデフォルト引数を変更することはできませんでした。ここで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 

Iは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

ちょうど(これも、applyで動作します)aggに引数として渡します。

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

いいです!私はそれを知らなかった!ありがとう – Ding

関連する問題