xarray.DataArray.pipe¶
-
DataArray.
pipe
(self, func: Union[Callable[..., ~T], Tuple[Callable[..., ~T], str]], *args, **kwargs) → ~T¶ Apply
func(self, *args, **kwargs)
This method replicates the pandas method of the same name.
- Parameters
func (function) – function to apply to this xarray object (Dataset/DataArray).
args
, andkwargs
are passed intofunc
. Alternatively a(callable, data_keyword)
tuple wheredata_keyword
is a string indicating the keyword ofcallable
that expects the xarray object.args (positional arguments passed into
func
.) –kwargs (a dictionary of keyword arguments passed into
func
.) –
- Returns
object
- Return type
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 asarg2
:>>> (ds.pipe(h) ... .pipe(g, arg1=a) ... .pipe((f, 'arg2'), arg1=a, arg3=c) ... )
Examples
>>> import numpy as np >>> import xarray as xr >>> 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> Dimensions: (lat: 2, lon: 2) Coordinates: * lat (lat) int64 10 20 * lon (lon) int64 150 160 Data variables: temperature_c (lat, lon) float64 14.53 11.85 19.27 16.37 precipitation (lat, lon) float64 0.7315 0.7189 0.8481 0.4671
>>> 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> Dimensions: (lat: 2, lon: 2) Coordinates: * lon (lon) int64 150 160 * lat (lat) int64 10 20 Data variables: temperature_c (lat, lon) float64 16.53 13.85 21.27 18.37 precipitation (lat, lon) float64 2.731 2.719 2.848 2.467
>>> x.pipe(adder, arg=2) <xarray.Dataset> Dimensions: (lat: 2, lon: 2) Coordinates: * lon (lon) int64 150 160 * lat (lat) int64 10 20 Data variables: temperature_c (lat, lon) float64 16.53 13.85 21.27 18.37 precipitation (lat, lon) float64 2.731 2.719 2.848 2.467
>>> ( ... x ... .pipe(adder, arg=2) ... .pipe(div, arg=2) ... .pipe(sub_mult, sub_arg=2, mult_arg=2) ... ) <xarray.Dataset> Dimensions: (lat: 2, lon: 2) Coordinates: * lon (lon) int64 150 160 * lat (lat) int64 10 20 Data variables: temperature_c (lat, lon) float64 14.53 11.85 19.27 16.37 precipitation (lat, lon) float64 0.7315 0.7189 0.8481 0.4671
See also