Преобразование значений разницы времени в датах и ​​панд из дней в годы - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть значение datetime (дата события), которое я создал путем импорта значения даты из файла CSV.Затем я попытался подсчитать возраст этого человека, вычтя дату и время события из даты и даты их рождения.Это дает мне ответ в днях - но я хотел бы получить его через годы.

Чтобы импортировать данные из файла CSV Excel, я использовал это:

Patients = pandas.read_csv("Patients_SN.csv", parse_dates=True) 
Patients['dateofbirth'] = pandas.to_datetime(Patients['dateofbirth'], format='%d/%m/%Y')

Затем я объединил пациентаданные с другим набором данных (событие) под названием Transitions3, так что каждое событие имеет дату рождения человека в столбце под названием «dateofbirth».

Мне удалось получить число (в днях), которое представляет возрастчеловека во время события, используя следующее:

Transitions3['AgeAtFirstEvent']=(Transitions3['FirstEventDate']-Transitions3['dateofbirth'])

Как я уже сказал - это дает мне ответ в днях

1782 days 00:00:00.000000000
  • , но я хочу его вгоды (и доли лет, например 45,5 года).

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

Transitions3['AgeAtFirstDial']= pandas.to_datetime(Transitions3['AgeAtFirstDial'], unit="y")

, но я получаю эту ошибку: ValueError:не могу разыграть юнит y

также пробовал:

Transitions3['Age1stDial']=Transitions3['AgeAtFirstDial'].total_years()

но я получаю это:

Traceback (most recent call last):

  File "<ipython-input-22-3dc3b7338471>", line 1, in <module>
    Transitions3['Age1stDial']=Transitions3['AgeAtFirstDial'].total_years()

  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py", line 4376, in __getattr__
    return object.__getattribute__(self, name)

AttributeError: 'Series' object has no attribute 'total_years'

Есть предложения?Заранее спасибо.

1 Ответ

0 голосов
/ 27 февраля 2019

Я думаю, что результат вычитания представляет собой серию временных интервалов.В этом случае вы можете преобразовать его следующим образом.

Transitions3['AgeAtFirstEvent'] / np.timedelta64(1, 'Y')

Подробнее об этом можно прочитать здесь .

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