Выравнивание временного ряда от 0 вместо отметок времени для сравнения - PullRequest
0 голосов
/ 17 января 2020

Я работаю с проблемой временных рядов, где я хотел бы сопоставить сходства. Поскольку у временного ряда, в котором я работаю, много пробелов, мне нужно перестроить его так, чтобы он начинался с t0 - tn, а не с фактических временных отметок, чтобы они были полезны для моих сравнений.

Пример:
P1 : (22-De c -2019, 5,0), (24-De c -2019,3,1), (01-01-2020,2,0)
P2: (05- Январь-2020,5,0), (15-02-2020,4,1), (03-03-2020,3,0), (03-05-2020,5,1), (05-06- 2020,2,0)

Выравнивая, чтобы начать с 0:
P1: (t0, 5, 0), (t1,3,1), (t2,2,0)
P2: (t0,5,0), (t1,4,1), (t2,3,0), (t3,5,1), (t4,2,0)

После выравнивания по начиная с 0 до tn серии выглядят немного похожими. Кроме того, они имеют неодинаковую длину и многовариантные последовательности.

В настоящее время я выполняю следующий подход для каждого набора:

first_group_df["timestamp"] = pd.to_datetime(first_group_df["timestamp"]) # Create to datetime
first_group_df.sort_values(by="timestamp", inplace=True) # Sort it in the order of arrival
time_index = [i for i in range(0,len(first_group_df["timestamp"]))] # Index from 0 to number of datapoints
first_group_df["time_index"] = time_index #Add it as a column
first_group_df = first_group_df.set_index("time_index") #Make it index and then drop timestamp

Существуют ли более эффективные подходы для выравнивания временных меток с целочисленным индексом. Я также думаю, что простой reset_index () после сортировки может работать. Я ищу лучшие подходы.

Ниже приведен примерный кадр данных для одного из идентификаторов:

    pid  val  outcome            timestamp
0   112    5        1  22-12-2019 10:00:00
5   112    4        0  27-01-2020 11:00:00
10  112    2        1  29-01-2020 11:00:00
15  112    1        1  01-02-2020 10:00:00
20  112    5        1  01-03-2020 10:00:00

1 Ответ

0 голосов
/ 17 января 2020

Вы можете использовать Series.rank:

df['t'] = df['timestamp'].rank()

То, что вы не указали, - как ранжировать строки с одинаковым временем. Функция rank принимает параметр method для работы со связями. Подробности см. В документации.

...