У меня есть фрейм данных (df1) с некоторыми значениями и несколькими группами.Я хотел бы выполнить линейную регрессию для каждой группы, чтобы я мог использовать коэффициенты для завершения df2 и затем объединить их (df3).До сих пор у меня есть менеджер на всем моем фрейме данных:
from sklearn import linear_model
import pandas as pd
def ols (X, y):
return linear_model.LinearRegression().fit(X, y)
X = df1[["day"]]
y = df1["value"]
results = linear_model.LinearRegression().fit(df1[["day"]], df1["value"])
df2['value'] = results.coef_*df2['day']+results.intercept_
df3 = pd.concat([df1, df2])
Это работает, но когда я пытаюсь использовать groupby и применяю как result = df1.groupby('id').apply(ols(df1[["day"]], df1["value"]))
Я получаю ошибку TypeError: 'LinearRegression' object is not callable
Я понимаю, что я не инициализированэкземпляр класса LinearRegression, но как я могу сделать это с помощью groupby?
df1 = pd.DataFrame({'id': ['a', 'a', 'b', 'b'],
'day' : [179,194, 184, 194],
'value' : [0.667, 1.229, 1.079, 1.69 ]
})
df2 = pd.DataFrame({'id': ['a', 'b'],
'day' : [191, 192],
'value' : ['lai', 'lai']
})
df1 = pd.DataFrame({'id': ['a', 'a','a', 'b', 'b', 'b'],
'day' : [179,191, 194, 184, 192, 194],
'value' : [0.667, 1.1166, 1.229, 1.079,1.5678,, 1.69 ]
})