2016-08-24 103 views
1

xarray文檔中,groupby.apply方法可以將某些函數應用於不同的組。正如在文檔中,groupby.apply方法採用多個參數

In [11]: def standardize(x): 
    ....:  return (x - x.mean())/x.std() 
    ....: 

In [12]: arr.groupby('letters').apply(standardize) 

但是,我怎樣才能把另一個參數放到標準化函數?即

def standardize(x, y): 
    ....:  return (x - x.mean())/x.std() + y.sum() 
arr.groupby('letters').apply(standardize(x, y))?? 

這顯然是不對的。 現在,無法調用apply方法。

+0

你也可以使用一個functool.partial得到一個新的功能與充滿y值在。 – derchambers

回答

1

要一次過多個變量應用的操作,將多個DataArray對象組合在一起成爲一個單一的xarray.Dataset,例如,

# foo and bar are xarray.DataArray objects 
ds = xarray.Dataset({'x': foo, 'y': bar}) 

def standardize(ds): 
    return (ds.x - ds.x.mean())/ds.x.std() + ds.y.sum() 

ds.groupby('letters').apply(standardize)