xarray.Dataset.pipe (original) (raw)

Dataset.pipe(func, *args, **kwargs)[source]#

Apply func(self, *args, **kwargs)

This method replicates the pandas method of the same name.

Parameters:

Returns:

object (Any) – the return type of func.

Notes

Use .pipe when chaining together functions that expect xarray or pandas objects, e.g., instead of writing

f(g(h(ds), arg1=a), arg2=b, arg3=c)

You can write

(ds.pipe(h).pipe(g, arg1=a).pipe(f, arg2=b, arg3=c))

If you have a function that takes the data as (say) the second argument, pass a tuple indicating which keyword expects the data. For example, suppose f takes its data as arg2:

(ds.pipe(h).pipe(g, arg1=a).pipe((f, "arg2"), arg1=a, arg3=c))

Examples

x = xr.Dataset( ... { ... "temperature_c": ( ... ("lat", "lon"), ... 20 * np.random.rand(4).reshape(2, 2), ... ), ... "precipitation": (("lat", "lon"), np.random.rand(4).reshape(2, 2)), ... }, ... coords={"lat": [10, 20], "lon": [150, 160]}, ... ) x <xarray.Dataset> Size: 96B Dimensions: (lat: 2, lon: 2) Coordinates:

def adder(data, arg): ... return data + arg ... def div(data, arg): ... return data / arg ... def sub_mult(data, sub_arg, mult_arg): ... return (data * mult_arg) - sub_arg ... x.pipe(adder, 2) <xarray.Dataset> Size: 96B Dimensions: (lat: 2, lon: 2) Coordinates:

x.pipe(adder, arg=2) <xarray.Dataset> Size: 96B Dimensions: (lat: 2, lon: 2) Coordinates:

( ... x.pipe(adder, arg=2) ... .pipe(div, arg=2) ... .pipe(sub_mult, sub_arg=2, mult_arg=2) ... ) <xarray.Dataset> Size: 96B Dimensions: (lat: 2, lon: 2) Coordinates: