extracting days from a numpy.timedelta64 value

numpy, pandas, python

Solution

You can convert it to a timedelta with a day precision. To extract the integer value of days you divide it with a timedelta of one day.

>>> x = np.timedelta64(2069211000000000, 'ns')
>>> days = x.astype('timedelta64[D]')
>>> days / np.timedelta64(1, 'D')
23

Or, as @PhillipCloud suggested, just `days.astype(int)` since the `timedelta` is just a 64bit integer that is interpreted in various ways depending on the second parameter you passed in (`'D'`, `'ns'`, ...).

You can find more about it here.

Problem

I am using pandas/python and I have two date time series s1 and s2, that have been generated using the 'to_datetime' function on a field of the df containing dates/times. When I subtract s1 from s2 s3 = s2 - s1 I get a series, s3, of type timedelta64[ns] ``` 0 385 days, 04:10:36 1 57 days, 22:54:00 2 642 days, 21:15:23 3 615 days, 00:55:44 4 160 days, 22:13:35 5 196 days, 23:06:49 6 23 days, 22:57:17 7 2 days, 22:17:31 8 622 days, 01:29:25 9 79 days, 20:15:14 10 23 days, 22:46:51 11 268 days, 19:23:04 12 NaT 13 NaT 14 583 days, 03:40:39 ``` How do I look at 1 element of the series: s3[10] I get something like this: numpy.timedelta64(2069211000000000,'ns') How do I extract days from s3 and maybe keep them as integers(not so interested in hours/mins etc.)?

Original source