У меня есть такой фрейм данных:
Index ID Industry years_spend asset
6646 892 4 4 144.977037
2347 315 10 8 137.749138
7342 985 1 5 104.310217
137 18 5 5 156.593396
2840 381 11 2 229.538828
6579 883 11 1 171.380125
1776 235 4 7 217.734377
2691 361 1 2 148.865341
815 110 15 4 233.309491
2932 393 17 5 187.281724
Я хочу создать фиктивные переменные для отрасли X years_spend, которые создают переменную len(df.Industry.value_counts()) * len(df.years_spend.value_counts())
, например, d_11_4 = 1 для всех строк, в которых промышленность == 1 и годы = 4, иначе d_11_4 = 0. Затем я могу использовать эти переменные для некоторых регрессионных работ.
Я знаю, что могу создавать группы, как я хочу, используя df.groupby(['Industry','years_spend']), и я знаю, что могу создать такую переменную для одного столбца, используя синтаксис patsy
в statsmodels
:
import statsmodels.formula.api as smf
mod = smf.ols("income ~ C(Industry)", data=df).fit()
но если я хочу сделать с двумя столбцами, я получаю сообщение об ошибке: IndexError: tuple index out of range
Как я могу сделать это с пандами или с помощью какой-либо функции внутри статистических моделей?