Fix Python – extracting days from a numpy.timedelta64 value

Question

Asked By – user7289

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.)?

Thanks in advance for any help.

Now we will see solution for issue: extracting days from a numpy.timedelta64 value

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.

This question is answered By – Viktor Kerkez

This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0