# xarray.decode_cf

### xarray.decode_cf(obj, concat_characters=True, mask_and_scale=True, decode_times=True, decode_coords=True, drop_variables=None, use_cftime=None, decode_timedelta=None)[[source]](https://github.com/pydata/xarray/blob/main/xarray/conventions.py#L496-L599)

Decode the given Dataset or Datastore according to CF conventions into
a new Dataset.

* **Parameters:**
  * **obj** ([`Dataset`](xarray.Dataset.html.md#xarray.Dataset) or `DataStore`) – Object to decode.
  * **concat_characters** ([`bool`](https://docs.python.org/3/builtins/functions.html#bool), *optional*) – Should character arrays be concatenated to strings, for
    example: [“h”, “e”, “l”, “l”, “o”] -> “hello”
  * **mask_and_scale** ([`bool`](https://docs.python.org/3/builtins/functions.html#bool), *optional*) – Lazily scale (using scale_factor and add_offset) and mask
    (using \_FillValue).
  * **decode_times** (`bool | CFDatetimeCoder | Mapping[str`, `bool | CFDatetimeCoder]`, *optional*) – Decode cf times (e.g., integers since “hours since 2000-01-01”) to
    np.datetime64.
  * **decode_coords** ([`bool`](https://docs.python.org/3/builtins/functions.html#bool) or `{"coordinates", "all"}`, *optional*) – Controls which variables are set as coordinate variables:
    - “coordinates” or True: Set variables referred to in the
      `'coordinates'` attribute of the datasets or individual variables
      as coordinate variables.
    - “all”: Set variables referred to in  `'grid_mapping'`, `'bounds'` and
      other attributes as coordinate variables.
  * **drop_variables** ([`str`](https://docs.python.org/3/builtins/stdtypes.html#str) or [iterable](https://docs.python.org/3/glossary.html#term-iterable), *optional*) – A variable or list of variables to exclude from being parsed from the
    dataset. This may be useful to drop variables with problems or
    inconsistent values.
  * **use_cftime** ([`bool`](https://docs.python.org/3/builtins/functions.html#bool), *optional*) – Only relevant if encoded dates come from a standard calendar
    (e.g. “gregorian”, “proleptic_gregorian”, “standard”, or not
    specified).  If None (default), attempt to decode times to
    `np.datetime64[ns]` objects; if this is not possible, decode times to
    `cftime.datetime` objects. If True, always decode times to
    `cftime.datetime` objects, regardless of whether or not they can be
    represented using `np.datetime64[ns]` objects.  If False, always
    decode times to `np.datetime64[ns]` objects; if this is not possible
    raise an error.

    #### Deprecated
    Deprecated since version 2025.01.1: Please pass a [`coders.CFDatetimeCoder`](xarray.coders.CFDatetimeCoder.html.md#xarray.coders.CFDatetimeCoder) instance initialized with `use_cftime` to the `decode_times` kwarg instead.
  * **decode_timedelta** (`bool | CFTimedeltaCoder | Mapping[str`, `bool | CFTimedeltaCoder]`, *optional*) – If True or `CFTimedeltaCoder`, decode variables and
    coordinates with time units in
    {“days”, “hours”, “minutes”, “seconds”, “milliseconds”, “microseconds”}
    into timedelta objects. If False, leave them encoded as numbers.
    If None (default), assume the same behavior as decode_times. The
    resolution of the decoded timedeltas can be configured with the
    `time_unit` argument in the `CFTimedeltaCoder` passed.
* **Returns:**
  **decoded** ([`Dataset`](xarray.Dataset.html.md#xarray.Dataset))
