xarray.DataTree.cumsum#
- DataTree.cumsum(dim=None, *, skipna=None, keep_attrs=None, **kwargs)[source]#
Reduce this DataTree’s data by applying
cumsum(i.e., cumulative sum) along some dimension(s).- Parameters:
dim (
str,IterableofHashable,"..."orNone, default:None) – Name of dimension[s] along which to applycumsum. For e.g.dim="x"ordim=["x", "y"]. If “…” or None, will reduce over all dimensions.skipna (
boolorNone, optional) – If True, skip missing values (as marked by NaN). By default, only skips missing values for float dtypes; other dtypes either do not have a sentinel missing value (int) orskipna=Truehas not been implemented (object, datetime64 or timedelta64).keep_attrs (
boolorNone, optional) – If True,attrswill be copied from the original object to the new one. If False, the new object will be returned without attributes.**kwargs (
Any) – Additional keyword arguments passed on to the appropriate array function for calculatingcumsumon this object’s data. These could include dask-specific kwargs likesplit_every.
- Returns:
reduced (
DataTree) – New DataTree withcumsumapplied to its data and the indicated dimension(s) removed
See also
numpy.cumsum,dask.array.cumsum,Dataset.cumsum,DataArray.cumsum,DataTree.cumulative- Aggregation
User guide on reduction or aggregation operations.
Notes
Non-numeric variables will be removed prior to reducing. datetime64 and timedelta64 dtypes are treated as numeric for aggregation operations.
Note that the methods on the
cumulativemethod are more performant (with numbagg installed) and better supported.cumsumandcumprodmay be deprecated in the future.Examples
>>> dt = xr.DataTree( ... xr.Dataset( ... data_vars=dict(foo=("time", np.array([1, 2, 3, 0, 2, np.nan]))), ... coords=dict( ... time=( ... "time", ... pd.date_range("2001-01-01", freq="ME", periods=6), ... ), ... labels=("time", np.array(["a", "b", "c", "c", "b", "a"])), ... ), ... ), ... ) >>> dt <xarray.DataTree> Group: / Dimensions: (time: 6) Coordinates: * time (time) datetime64[us] 48B 2001-01-31 2001-02-28 ... 2001-06-30 labels (time) <U1 24B 'a' 'b' 'c' 'c' 'b' 'a' Data variables: foo (time) float64 48B 1.0 2.0 3.0 0.0 2.0 nan
>>> dt.cumsum() <xarray.DataTree> Group: / Dimensions: (time: 6) Coordinates: * time (time) datetime64[us] 48B 2001-01-31 2001-02-28 ... 2001-06-30 labels (time) <U1 24B 'a' 'b' 'c' 'c' 'b' 'a' Data variables: foo (time) float64 48B 1.0 3.0 6.0 6.0 8.0 8.0
Use
skipnato control whether NaNs are ignored.>>> dt.cumsum(skipna=False) <xarray.DataTree> Group: / Dimensions: (time: 6) Coordinates: * time (time) datetime64[us] 48B 2001-01-31 2001-02-28 ... 2001-06-30 labels (time) <U1 24B 'a' 'b' 'c' 'c' 'b' 'a' Data variables: foo (time) float64 48B 1.0 3.0 6.0 6.0 8.0 nan