Рассчитать с различными форматами даты и времени, datetime и datetime64 - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь вычислить дни между двумя датами:

Первая дата:

date = datetime.datetime.today() # {datetime} 2018-09-17 14:42:06.506541

Вторая дата, извлеченная из фрейма данных:

date2 = data_audit.loc[(data_audit.Audit == audit), 'Erledigungsdatum'].values[0]
# {datetime64} 2018-07-23T00:00:00.000000000

Ошибка:

вычитание ufunc не может использовать операнды с типами dtype ('O') и dtype ('M8 [ns]') *

Моя следующая попытка была:

date = np.datetime64(datetime.datetime.now()) # {datetime64} 2018-09-17T14:48:16.599541

Это привело к следующей ошибке (я передаю дату в качестве параметра в функции):

ufunc 'bitwise_and' не поддерживается для типов ввода и входовне может быть безопасно приведен к каким-либо поддерживаемым типам в соответствии с правилом приведения «safe».

Как мне решить эту проблему?Второй вариант кажется мне более логичным, но я не понимаю, почему я не могу передать простую дату функции.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Давайте попробуем такой подход

import datetime
date  = datetime.datetime.today()
date2 = '2018-07-23'#here could be your date converted to proper type
date2 = datetime.datetime.strptime(date2, '%Y-%m-%d')
difference = date- date2
difference = difference.days

И вы также можете применить df.some_col_with_difference.astype('timedelta64[D]') ко всему столбцу в фрейме данных

0 голосов
/ 17 сентября 2018

Я думаю, что-то вроде этого должно работать для вас:

import datetime
import numpy as np

# earlier being of type datetime64
earlier = np.datetime64(datetime.datetime.today())
# Converting datetime64 to datetime
earlier = earlier.astype(datetime.datetime)
now = datetime.datetime.today()

print(now-earlier)
...