Преобразовать доли секунды, прошедшие с момента появления, в индекс даты и времени - PullRequest
0 голосов
/ 02 января 2019

Для анализа моих футбольных данных, чтобы использовать функцию панд between_time, мне нужно преобразовать список строк, представляющих доли секунды с начала измерения, в индекс панд date_time.Данные времени выглядят следующим образом:

Time data

Чтобы добиться этого, я попытался сделать следующее:

df['Time'] = df['Timestamp']*(1/freq)
df.index = pd.to_datetime(df['Time'], unit='s')

В котором freq=600 и Timestamp - номер кадра, считающий от 0.

Я ожидал, что новый индекс покажет следующий формат:

  • %y%m%d-%h%m%s%f

Но, к сожалению, to_datetime не знает, как обрабатывать данные моего типа времени (а именно, считать до 4750 с после запуска).

Поэтому мой вопрос заключается в том, как преобразовать данные выборки времени в индекс date_time.

1 Ответ

0 голосов
/ 04 января 2019

На основании этой темы Теперь я создал следующую функцию:

def timeDelta2DateTime(self, time_delta_list):
    '''This method converts a list containing the time since measurement onset [seconds] into a
    list containing dateTime objects counting up from 00:00:00.

    Args:
        time_delta_list (list): List containing the times since the measurement has started.

    Returns:
        list: A list with the time in the DateTime format.
    '''

    ### Use divmod to convert seconds to m,h,s.ms ###
    s, fs = list(zip(*[divmod(item, 1) for item in time_delta_list]))
    m, s = list(zip(*[divmod(item, 60) for item in s]))
    h, m = list(zip(*[divmod(item, 60) for item in m]))

    ### Create DatTime list ###
    ms = [item*1000 for item in fs] # Convert fractional seconds to ms
    time_list_int = list(zip(*[list(map(int,h)), list(map(int,m)), list(map(int,s)), list(map(int,ms))])) # Combine h,m,s,ms in one list

    ### Return dateTime object list ###
    return [datetime(2018,1,1,item[0],item[1],item[2],item[3]) for item in time_list_int]

Поскольку это кажется очень медленным, смело предлагайте лучший вариант.

...