Учитывая предыдущие значения посчитать прогнз
у меня есть dataframe :
Data Interval prognoz
3414 A2 3289
3563 A3 3289
3391 A2 3289
3463 A2 3289
3110 A1 3289
2844 A1 3289
3292 A2 3289
3321 A2 3289
3608 A3 3289
2753 A1 3289
2886 A1 3289
3596 A3 3289
3644 A3 3289
4029 A4 3814
4023 A4 3814
4870 A6 4026
5859 A8 5618
6321 A9 5674
5923 A8 5618
5699 A8 5618
5521 A7 5827
5995 A9 5674
Я считаю прогноз по каждому интервалу, например в первой строке у меня интервал А2 значит и считаю по А2, но нужно наоборот. Если в первой строке интервал А2, то мы по этому интервалу считаем прогноз для второй строки и так далее,по интервалу второй строки считаем прогноз для третьей строки.
f = []
for i, _ in enumerate(df["Data"]): # по факту просто цикл от 0 до 21
A = (df.iloc[i, 1]) # нахожу к какой А отнесли эту строку
words = (res['Groups'][A]) # нахожу в какую группу входит данные с найденной строки
summa = 0 # сюда прогноз суммирую
# print(A, 11111111111, words)
pari = grupb(str.split(words))
par = (res['pari'][A])
for j in pari: # цикл по всем А из группы
summa += res['sred'][j]
# print(res['sred'][j], j)
prog = summa / par
f.append(prog)
# print(prog)
Вот мой код, как исправить? на выходе:
Data Interval prognoz
3414 A2
3563 A3 3289
3391 A2 3289
3463 A2 3289
3110 A1 3289
2844 A1 3289
3292 A2 3289
3321 A2 3289
3608 A3 3289
2753 A1 3289
2886 A1 3289
3596 A3 3289
3644 A3 3289
4029 A4 3289
4023 A4 3814
4870 A6 3814
5859 A8 4026
6321 A9 5618
5923 A8 5674
5699 A8 5618
5521 A7 5618
5995 A9 5827
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Воспользуйтесь функцией Series.shift():
s = pd.Series(f)
df["prognoz"] = s.shift(-1)