Преобразование даты и времени панд в часы с начала - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть фрейм данных со следующим индексом времени данных:

DatetimeIndex(['2018-10-17 00:00:00', '2018-10-17 01:00:00',
               '2018-10-17 02:00:00', '2018-10-17 03:00:00',
               '2018-10-17 04:00:00', '2018-10-17 05:00:00',
               '2018-10-17 06:00:00', '2018-10-17 07:00:00',
               '2018-10-17 08:00:00', '2018-10-17 09:00:00',
               ...
               '2018-11-29 15:00:00', '2018-11-29 16:00:00',
               '2018-11-29 17:00:00', '2018-11-29 18:00:00',
               '2018-11-29 19:00:00', '2018-11-29 20:00:00',
               '2018-11-29 21:00:00', '2018-11-29 22:00:00',
               '2018-11-29 23:00:00', '2018-11-30 00:00:00'],
              dtype='datetime64[ns]', name='dates', length=914, freq=None)

Как преобразовать его в часы из первого индекса даты и времени, то есть 0, 1, 2 ...

Ответы [ 2 ]

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

Ваш вопрос, по-видимому, предполагает, что индекс таков, что исходные метки времени указаны в часах, а результат должен быть целым числом, и в этом случае я бы изменил ответ sacul на что-то вроде

24*(idx - idx[0]).days + idx.hour
Int64Index([   0,    1,    2,    3,    4,    5,    6,    7,    8,    9, 1047,
        1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056],
       dtype='int64', name='dates')

ииспользуйте атрибут components pandas.TimeDeltaIndex для обработки любых оставшихся минут, секунд, и т. д. , чтобы использовать только уже открытые атрибуты.

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

Вы можете вычесть первую дату и время из всех значений в вашем индексе, а затем разделить на numpy.timedelta(1,'h') (timedelta of 1 hour):

(df.index - df.index[0]) / np.timedelta64(1,'h')
Float64Index([   0.0,    1.0,    2.0,    3.0,    4.0,    5.0,    6.0,    7.0,
                 8.0,    9.0, 
                 ...
                 1047.0, 1048.0, 1049.0, 1050.0, 1051.0, 1052.0,
                 1053.0, 1054.0, 1055.0, 1056.0],
             dtype='float64', name='dates')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...