# xarray.DataArray.pipe

#### DataArray.pipe(func, \*args, \*\*kwargs)[[source]](https://github.com/pydata/xarray/blob/main/xarray/core/common.py#L745-L879)

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

This method replicates the pandas method of the same name.

* **Parameters:**
  * **func** ([`callable()`](https://docs.python.org/3/builtins/functions.html#callable)) – function to apply to this xarray object (Dataset/DataArray).
    `args`, and `kwargs` are passed into `func`.
    Alternatively a `(callable, data_keyword)` tuple where
    `data_keyword` is a string indicating the keyword of
    `callable` that expects the xarray object.
  * **\*args** – positional arguments passed into `func`.
  * **\*\*kwargs** – a dictionary of keyword arguments passed into `func`.
* **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

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

You can write

```python
(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`:

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

### Examples

<div class="try_examples_button_container"><button class="try_examples_button" onclick="window.tryExamplesShowIframe('21e7315b-18b9-4eab-bf89-6fcfa2389bb4','3db6bac4-df81-48cb-8790-470e9e882f99','df23f596-23af-462c-a0ba-0941946aca89','../lite/tree/../notebooks/index.html?path=c1aa20cb_8f32_4620_a1d6_1ae4a9ff1de8.ipynb','None')">Try it in your browser!</button></div>
```pycon
>>> 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:
  * lat            (lat) int64 16B 10 20
  * lon            (lon) int64 16B 150 160
Data variables:
    temperature_c  (lat, lon) float64 32B 10.98 14.3 12.06 10.9
    precipitation  (lat, lon) float64 32B 0.4237 0.6459 0.4376 0.8918
```

```pycon
>>> 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:
  * lat            (lat) int64 16B 10 20
  * lon            (lon) int64 16B 150 160
Data variables:
    temperature_c  (lat, lon) float64 32B 12.98 16.3 14.06 12.9
    precipitation  (lat, lon) float64 32B 2.424 2.646 2.438 2.892
```

```pycon
>>> x.pipe(adder, arg=2)
<xarray.Dataset> Size: 96B
Dimensions:        (lat: 2, lon: 2)
Coordinates:
  * lat            (lat) int64 16B 10 20
  * lon            (lon) int64 16B 150 160
Data variables:
    temperature_c  (lat, lon) float64 32B 12.98 16.3 14.06 12.9
    precipitation  (lat, lon) float64 32B 2.424 2.646 2.438 2.892
```

```pycon
>>> (
...     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:
  * lat            (lat) int64 16B 10 20
  * lon            (lon) int64 16B 150 160
Data variables:
    temperature_c  (lat, lon) float64 32B 10.98 14.3 12.06 10.9
    precipitation  (lat, lon) float64 32B 0.4237 0.6459 0.4376 0.8918
```

<div id="df23f596-23af-462c-a0ba-0941946aca89" class="try_examples_outer_iframe  hidden"><div class="try_examples_button_container"><button class="try_examples_button" onclick="window.tryExamplesHideIframe('21e7315b-18b9-4eab-bf89-6fcfa2389bb4','df23f596-23af-462c-a0ba-0941946aca89')">Go Back</button><button class="try_examples_button" onclick="window.openInNewTab('21e7315b-18b9-4eab-bf89-6fcfa2389bb4','df23f596-23af-462c-a0ba-0941946aca89')">Open In Tab</button></div><div id="3db6bac4-df81-48cb-8790-470e9e882f99" class="jupyterlite_sphinx_iframe_container"></div></div><script>document.addEventListener("DOMContentLoaded", function() {window.loadTryExamplesConfig("../try_examples.json");});</script>

#### SEE ALSO
[`pandas.DataFrame.pipe`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.pipe.html#pandas.DataFrame.pipe)
