2016-03-30 5 views
2

Я хочу запустить регрессию OLS с помощью pandas и groupby.Регрессия OLS с groupby

Я пытаюсь следующий код:

import pandas as pd 
from pandas.stats.api import ols 

df=pd.read_csv(r'F:\File.csv') 
result=df.groupby(['FID']).apply(lambda x: ols(y=df[x['MEAN']], x=df[x['Accum_Prcp'],x['Accum_HDD']])) 
print result 

но это возвращает:

File "C:\Users\spotter\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\core\indexing.py", line 1150, in _convert_to_indexer 
    raise KeyError('%s not in index' % objarr[mask]) 

    KeyError: '[ 0.84978328 0.72115778 0.53965104 0.52955655 0.73372541 0.64617074\n 0.60040938 0.7147218 0.65533535 0.57980322 0.57382068 0.56543435\n 0.70740831 0.9245337 0.54859569 0.6789395 0.7086157 0.3835853\n 0.54924104 0.80813778 0.83758118 0.22673391 0.26594087 0.63650468\n 0.89889911 0.38324657 0.30235986 0.62922678 0.55219822 0.55950705\n 0.71137557 0.53631811 0.70158798 0.87116361 0.93751381 0.91125518\n 0.80020908 0.75301262 0.82391046 0.77483673 0.63069573 0.44954455\n 0.83578862 0.56338649 0.64236039 0.93270243 0.93077291 0.83847668\n 0.8268959 0.85400317 0.74319769 0.94803537 0.97484929 0.45366017\n 0.80823694 0.82028051 0.63960395 0.63015722 0.73132888 0.55570184\n 0.83265402 0.75009687 0.58207032 0.92064804 0.91058008 0.86726397\n 0.89204098 0.95573514 0.75704367 0.80786363 0.87448548 0.7553715\n 0.88965962 0.82828493 0.82423891 0.81034742 0.90104876 0.78875473\n 0.97369268] not in index' 

есть что-то с моим синтаксисом, что это неправильно?

сделать это без GroupBy будет что-то вроде этого:

result = ols(y=df['MEAN'], x=df[['Accum_HDD','Accum_Prcp']]) 

и работает правильно.

Мой dataframe выглядит как-то вроде этого:

FID Image_Date MEAN Accum_Prcp Accum_HDD 
1  19920506  2.0 500.0  1000.0 
1  19930506  1.7 450.0  1050.0 
2  19920506  2.7 456.0  992.0 
2  19930506  1.9 376.0  800.0 

ответ

1

Try:

grps=df.groupby(['FID']) 
for fid, grp in grps: 
    ols(y=grp.loc[:, 'MEAN'], x=grp.loc[:, ['Accum_Prcp', 'Accum_HDD']]) 
+0

, который возвращает: 'FID_ 3 \ п -------------- ----------- Резюме регрессии ... 4 \ n ------------------------- Резюме регрессии. .. 5 \ n ------------------------- Резюме регрессии ... 6 \ n --------- ---------------- Резюме регрессии ... 7 \ n ------------------------ -Сумминг Рег ressi ... 'поэтому в основном он возвращает' \ n' для каждого элемента в groupby. Или, возможно, я просто не могу распечатать каждый элемент и просмотреть их в моей среде python. –

+0

Возможно, вы захотите перебрать объекты 'groupby'. – Stefan

+0

yep, итерация над ними работает –

Смежные вопросы