2016-08-24 318 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)