Преобразуйте разницу между двумя датами в целое число - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть дата (df), на которую похожа голова:

        DATE  BBG  FLAG  DATE_DIFF
0 2014-03-04    A     0        NaT
1 2014-04-04    B     1    31 days
2 2014-04-07    C     0     3 days
3 2014-04-08    D     0     1 days
4 2014-04-09    E     0     1 days

столбец DATE_DIFF - это разница между датой в строке и датой в строке выше. Для вычисления DATE_DIFF я использовал следующее:

df['DATE_DIFF'] = (df['DATE']-df['DATE'].shift(1))

Я ищу способ преобразовать столбец DATE_DIFF в целочисленное значение, чтобы результирующий кадр данных выглядел следующим образом:

        DATE  BBG  FLAG  DATE_DIFF
0 2014-03-04    A     0        NaN
1 2014-04-04    B     1         31 
2 2014-04-07    C     0          3 
3 2014-04-08    D     0          1 
4 2014-04-09    E     0          1 

Я пытался использовать:

df['DATE_DIFF'] = (df['DATE']-df['DATE'].shift(1)).astype(int)

но это просто дает мне ошибку:

TypeError: cannot astype a timedelta from [timedelta64[ns]] to [int32]

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Вы можете сделать то же самое, что и сейчас, просто добавив dt.days

df['diff'] = (df['DATE']-df['DATE'].shift(1)).dt.days

    DATE    BBG FLAG    diff
0   2014-03-04  A   0   NaN
1   2014-04-04  B   1   31.0
2   2014-04-07  C   0   3.0
3   2014-04-08  D   0   1.0
4   2014-04-09  E   0   1.0

только заметьте, что dtype будет float, а не int, потому что первая строка NaN

0 голосов
/ 04 ноября 2018

Если у вас есть два объекта даты, вы можете просто вычесть их.

from datetime import date

d0 = date(2008, 8, 18)
d1 = date(2008, 9, 26)
delta = d1 - d0
print delta.days

Соответствующий раздел документации: https://docs.python.org/library/datetime.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...