Как преобразовать int в datetime в пандах DataFrame - PullRequest
1 голос
/ 26 мая 2019

У меня есть пандас DataFrame, имеющий следующую структуру:

enter image description here

где time атрибут / столбец представляет некоторый момент времени, с которого проводились измерения для конкретного животного, обозначается атрибутом animal_id. Измерения были координатами x и y, представленными атрибутами x и y соответственно.

Я хочу преобразовать time из int в формат datetime. Но когда я делаю следующее:

data['time'] = pd.to_datetime(data['time'])

Выход:

data['time'][:10]

есть:

0   1970-01-01 00:00:00.000000001
1   1970-01-01 00:00:00.000000001
2   1970-01-01 00:00:00.000000001
3   1970-01-01 00:00:00.000000001
4   1970-01-01 00:00:00.000000001
5   1970-01-01 00:00:00.000000002
6   1970-01-01 00:00:00.000000002
7   1970-01-01 00:00:00.000000002
8   1970-01-01 00:00:00.000000002
9   1970-01-01 00:00:00.000000002
Name: time, dtype: datetime64[ns]

Как мне указать в этом две вещи:

  1. Дата начала вместо 1970-01-01, чтобы сказать 2019-05-10
  2. Укажите отличия между двумя последовательными значениями времени по сравнению с приведенным выше выводом, чтобы указать разницу между минутами

Спасибо!

1 Ответ

2 голосов
/ 26 мая 2019

Используйте to_timedelta для минутной шкалы времени и добавьте Timestamp, потому что для минут to_datetime с параметром origin и unit не реализовано:

data = pd.DataFrame({'time':[1,1,2,2,3,4]})

data['time0'] = pd.to_timedelta(data['time'], unit='Min') + pd.Timestamp('2019-05-10')

data['time1'] = pd.to_datetime(data['time'], origin='2019-05-10', unit='s')
data['time2'] = pd.to_datetime(data['time'], origin='2019-05-10', unit='d')
print (data)

   time               time0               time1      time2
0     1 2019-05-10 00:01:00 2019-05-10 00:00:01 2019-05-11
1     1 2019-05-10 00:01:00 2019-05-10 00:00:01 2019-05-11
2     2 2019-05-10 00:02:00 2019-05-10 00:00:02 2019-05-12
3     2 2019-05-10 00:02:00 2019-05-10 00:00:02 2019-05-12
4     3 2019-05-10 00:03:00 2019-05-10 00:00:03 2019-05-13
5     4 2019-05-10 00:04:00 2019-05-10 00:00:04 2019-05-14

, потому что:

data['time0'] = pd.to_datetime(data['time'], origin='2019-05-10', unit='Min')

ValueError: не может разыграть юнит Мин.

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