# xarray.DataTree.pipe

#### DataTree.pipe(func, \*args, \*\*kwargs)[[source]](https://github.com/pydata/xarray/blob/main/xarray/core/datatree.py#L1904-L1969)

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** (`T`) – 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(dt), arg1=a), arg2=b, arg3=c)
```

You can write

```python
(dt.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
(dt.pipe(h).pipe(g, arg1=a).pipe((f, "arg2"), arg1=a, arg3=c))
```
