Пользовательская функция croston в python

Я хочу спрогнозировать значения непостоянного спроса. Для этого мне нужны следующие результаты:

1. non-zero elements values(q)
2. inter arrival time between two non-zero elements(a)

Например, мои данные такие [type:series]

1,2,0,0,3,3,0,1,0,0,2,0,0,0,0,4,0,0

и мне нужен такой вывод, и он должен быть в формате фрейма данных pandas.

q  a
1  1
2  1
3  3
3  1
1  2 
2  3
4  4 

Я попробовал несколько кодов, но не получил должного результата.

Может ли кто-нибудь помочь мне решить эту проблему?

«Я пробовал некоторые коды», какие коды вы пробовали?

ignoring_gravity 10.09.2018 10:17

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

neeraja 10.09.2018 10:21

не могли бы вы объяснить логику значений в .. ??

anky 10.09.2018 10:32
4
3
1 413
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

IIUC

import pandas as pd
lst = [1,2,0,0,3,3,0,1,0,0,2,0,0,0,0,4,0,0]
s = pd.Series(lst, name='q')

s = s[s!=0].reset_index()
s['a'] = s['index'] - s['index'].shift(1)
s.drop('index', axis=1, inplace=True)

print(s)

# output:

    q     a
0   1   NaN
1   2   1.0
2   3   3.0
3   3   1.0
4   1   2.0
5   2   3.0
6   4   5.0

Если вы хотите заполнить NaN1, используйте s = s.bfill()

Другие вопросы по теме