Как задержать количество дней вместо количества строк - для каждого идентификатора - PullRequest
0 голосов
/ 02 апреля 2019

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

Данные состоят из даты, идентификатора для каждого автомобиля, расстояния до пункта назначения

Мне нужна переменная с задержкой на 3 дня, а не на 3 строки на car_ID - так как каждый car_ID присутствует не каждый день.Поэтому задержка должна основываться на дате, а не на строках.

Если в истории менее 3 дней, результат должен быть -1.

В настоящее время у меня есть этот кусоккода, который отстает от каждой строки на 3 дня

data['distance_to_destination'].groupby(data['car_ID']).shift(3).tolist()

Но это только отставание по количеству строк, а не по количеству дней.

Чего я хочу добиться, так это столбца "lag_dtd_3":

date    car_ID  distance_to_destination lag_dtd_3

01/01/2019  1   100 -1

01/01/2019  2   200 -1

02/01/2019  1   80  -1

02/01/2019  2   170 -1

02/01/2019  3   500 -1

03/01/2019  2   120 -1

05/01/2019  1   25  80

05/01/2019  2   75  170

06/01/2019  1   20  -1

06/01/2019  2   30  120

06/01/2019  3   120 -1

1 Ответ

0 голосов
/ 02 апреля 2019

Одним из решений для задержки информации на 3 дня является перемещение индекса вместо смещения.

pivot = data.pivot(columns='car_ID')
shifted = pivot.copy()
shifted.index = shifted.index + pd.DateOffset(days=3) # Here I lag the index instead of shifting

shifted.columns = shifted.columns.set_levels(['lag_dtd_3'], 0)
output = pd.concat([pivot, shifted], axis = 1).stack('car_ID').reset_index('car_ID')
output['lag_dtd_3'] = output['lag_dtd_3'].fillna(-1)
output = output.dropna()

Выход:

    car_ID  distance_to_destination lag_dtd_3
date            
2019-01-01  1   100.0   -1.0
2019-01-01  2   200.0   -1.0
2019-01-02  1   80.0    -1.0
2019-01-02  2   170.0   -1.0
2019-01-02  3   500.0   -1.0
2019-01-03  2   120.0   -1.0
2019-01-05  1   25.0    80.0
2019-01-05  2   75.0    170.0
2019-01-06  1   20.0    -1.0
2019-01-06  2   30.0    120.0
2019-01-06  3   120.0   -1.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...