Это не лучшее решение, но оно очень расширяемое. df.update
- ваш спаситель в таких ситуациях.
import pandas as pd
df = pd.DataFrame([[17, 19, 49],
[4, 9, 2],
[2, 23, 3],
[8, 23, 7],
[6, 21, 24],
[5, "", ""],
[5, "", ""],
[5, "", ""],
[5, "", ""],
[5, "", ""],
[5, "", ""],
[5, "", ""]], columns=list("ABC"))
df.index = pd.date_range(start="12-31-2019", end="01-11-2020", freq="D")
def forecast(df):
last_day = df.iloc[-1]
new_day = last_day.name + pd.Timedelta(days=1)
new_data = df.loc[last_day.name - pd.Timedelta(days=3):last_day.name, :].mean()
new_data.name = new_day
return new_data
num_predict_days = 7
columns_to_predict = ['B', 'C']
available_data = df.shape[0] - num_predict_days
df_to_predict = df.iloc[:available_data, :].loc[:, columns_to_predict]
for i in range(num_predict_days):
df_to_predict = df_to_predict.append(forecast(df_to_predict))
df.update(df_to_predict)