BUG: allow .std() of timedelta types · Issue #8471 · pandas-dev/pandas (original) (raw)
Navigation Menu
- Explore
- Pricing
Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Appearance settings
Description
This currently raises TypeError
as its disabled in core/nanops.py
, see here: d29d4c6
The issue is that .var()
can generate a value that is too big for the timedeltas to hold propery, and std CALLS var.
solns:
- reduce the value of the timedeltas going into var to make them work (and inflate on exit), e.g. divide by 1e9 or something. lose some small amount of precision.
- allow std to return a valid value by passing a flag thru to var (and don't wrap the results). a bit hacky
In [7]: max_int = np.iinfo(np.int64).max
In [8]: max_int
Out[8]: 9223372036854775807
In [9]: pd.Timedelta(max_int)
Out[9]: Timedelta('106751 days 23:47:16.854775')
In [10]: big_float = 3e19
In [12]: pd.Timedelta(big_float)
---------------------------------------------------------------------------
OverflowError Traceback (most recent call last)
OverflowError: Python int too large to convert to C long
In [13]: pd.Timedelta(np.sqrt(big_float))
Out[13]: Timedelta('0 days 00:00:05.477225')