Pandas Groupby — запустить функцию Self — затем преобразовать (применить)Python

Программы на Python
Anonymous
Pandas Groupby — запустить функцию Self — затем преобразовать (применить)

Сообщение Anonymous »


Мне нужно запустить регрессию для каждой группы, а затем передать коэффициенты в новый столбец b. Вот мой код:

Самоопределяемая функция:

def simplereg(g, y, x): пытаться: xvar = sm.add_constant(g[x]) yvar = г[у] модель = sm.OLS(yvar, xvar, Missing='drop').fit() б = модель.параметры[х] return pd.Series([b*100]*len(g)) кроме исключения как e: return pd.Series([np.NaN]*len(g)) Создайте образец данных:

импортировать панд как pd импортировать numpy как np # Установка параметров gvkeys = ['A', 'B', 'C', 'D'] # Возможные значения для gvkey years = np.arange(2000, 2020) # Возможные значения года # Количество строк для каждого gvkey, обеспечивающее 5-7 наблюдений для каждого num_rows_per_gvkey = np.random.randint(5, 8, size=len(gvkeys)) total_rows = сумма (num_rows_per_gvkey) # Создание фрейма данных np.random.seed(0) # Для воспроизводимости df = pd.DataFrame({ 'gvkey': np.repeat(gvkeys, num_rows_per_gvkey), 'год': np.random.choice(лет, размер=total_rows), 'y': np.random.rand(total_rows), 'x': np.random.rand(total_rows) }) df.sort_values(by='year', ignore_index=True, inplace=True) # убедитесь, что код может обрабатывать четные данные без сортировки Запустите код groupby:

df['b'] = df.groupby('gvkey').apply(simplereg, y='y', x='x') Однако код возвращает столбец «b» со всеми значениями N/A. Могу я спросить, в чем проблема и как ее исправить?

Спасибо

Вернуться в «Python»