Skip to content

interaction with timedelta64 #220

Open
@keewis

Description

@keewis

Arrays with dtype timedelta64 are basically quantities with dimension [time], and they even have explicit units.

It would be really useful to be able to convert between those and pint quantities. The core logic should probably live in pint, but I think we should figure out a way to make the conversion easier:

arr = xr.Dataset(
    coords={
        "delta1": ("time", np.arange(100, dtype="timedelta64[s]")),
        "delta2": ("time", np.arange(100), {"units": "s"})
    }
).pint.quantify()
arr.pint.to({"delta1": "s", "delta2": "timedelta64[s]"})

(not sure if overloading .to would be worth it, but if not I'm sure we can come up with something better).

Similarly, I'd like to be able to infer the frequency of a datetime64 object and get the frequency (if any) as a quantity. It seems this works (found here):

from pandas.tseries.frequencies import to_offset

timedelta = to_offset(xr.infer_freq(time)).delta.to_numpy()

where the timedelta would then be converted to pint using the functionality described above.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions