Создание нового столбца путем смещения существующего столбца на 1 строку вниз с помощью панд - PullRequest
0 голосов
/ 09 мая 2018

Я занимаюсь спортом. Цель состоит в том, чтобы записать текущее время события и PreviousEventTime в игре. У меня есть образец набора данных по ссылке ниже.

https://drive.google.com/open?id=1DUNrWPFwrkZHpq_KeA4rZCJ94sbpUEDI

В этом файле 11 столбцов. события собираются на основе времени. Для этой перестановки я буду использовать следующие столбцы gsm_ID , время события столбцы

Я хочу создать новый столбец PreviousEventTime , который займет n-1 строку столбца eventdatetime . Это означает, что для каждого gsm_ID будет первое eventdatetime . Новый столбец будет представлять время следующего события по сравнению со столбцом времени.

gsm_ID eventdatetime PreviousEventTime

2462794 08/11/2017 18:46 08/11/2017 18:45

2462794 08/11/2017 18:49 08/11/2017 18:46

2462794 08/11/2017 19:13 08/11/2017 18:49

2462794 08/11/2017 19:31 08/11/2017 19:13

2462794 08/11/2017 20:09 08/11/2017 19:31

2462795 08/12/2017 17:39 08/12/2017 16:30

2462795 08/12/2017 17:44 08/12/2017 17:39

Приведенный выше пример только для двух игр. Вы можете различить по gsm_id . Строка for в PreviousEventTime всегда будет matchdatetime. У меня будет 100 игр. но процесс повторится, как указано выше.

eventdata ['PreviousEventTime-1'] = eventdata.groupby(['gsm_id'])['eventdatetime'].shift(-1)

Но это работает только для первых gsm_ID . Это не сработало для других gsm_ID . Выходные данные из приведенного выше сценария ниже:

enter image description here

Ваш совет будет высоко оценен. С Уважением, Зефир

1 Ответ

0 голосов
/ 09 мая 2018

Сортировка правильно решила проблему. Я добавил следующие сортировки и индексации:

eventdata = eventdata.set_index(['gsm_id']) .sort_index(ascending =True)

eventdata=eventdata.sort_values(['matchdatetime','time'],ascending=[True,True])

eventdata ['PreviousEventTime-1'] = eventdata.groupby(['gsm_id','matchdatetime'])['eventdatetime'].shift(1, axis = 0)

Но оставшаяся часть должна заполнить NaT к matchdatetime . Спасибо всем за советы. С уважением Зефир

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