У меня есть dataframe MULTINDEX и я пытаюсь заполнить вниз значение, MAX_PTS_YR
, так что значение MAX_PTS_YR
в t+1
год составляет MAX_PTS_YR
в t
.Панды | Fillna (ffill) в сгруппированной dataframe не заполнит
So: MAX_PTS_YR
в 2016
должно быть равно 116
.
Использование nth
, я нашел MAX_PTS
за предыдущий год:
DF['MAX_PTS_YR'] = DF.groupby(by=['Affiliation','Year'],as_index=False)['PtsYr'].nth(-1)
Affiliation mkid Year PtsYr MAX_PTS_YR
MVPAFL0003 10176228 2015 96.0 NaN
MVPAFL0003 10176228 2015 96.0 NaN
MVPAFL0003 10176228 2015 106.0 NaN
MVPAFL0003 10176228 2015 116.0 116.0
MVPAFL0003 10176228 2016 10.0 NaN
MVPAFL0003 10176228 2016 10.0 NaN
MVPAFL0003 10176228 2016 20.0 NaN
MVPAFL0003 10176228 2016 20.0 NaN
MVPAFL0003 10176228 2016 30.0 NaN
MVPAFL0003 10176228 2016 40.0 NaN
MVPAFL0003 10176228 2016 50.0 NaN
MVPAFL0003 10176228 2016 50.0 NaN
MVPAFL0003 10176228 2016 52.0 NaN
MVPAFL0003 10176228 2016 62.0 NaN
MVPAFL0003 10176228 2016 62.0 NaN
MVPAFL0003 10176228 2016 82.0 NaN
MVPAFL0003 10176228 2016 94.0 NaN
MVPAFL0003 10176228 2016 94.0 NaN
MVPAFL0003 10176228 2016 94.0 NaN
MVPAFL0003 10176228 2016 104.0 NaN
MVPAFL0003 10176228 2016 114.0 114.0
И я думал, что я мог бы fillna
вниз на этой Affiliation
группы:
DF.groupby(by=['Affiliation'],as_index=False)['MAX_PTS_AFFIL'].fillna(method='ffill',inplace=True)
Но когда я это сделать, не NaN
значения заполнены.
Любые идеи?
Я думаю, что проблема связана с параметром 'inplace'. Вы работаете над копией, чтобы на самом деле изменить копию. Попробуйте 'DF ['MAX_PTS_AFFIL'] = DF.groupby (by = ['Affiliation'], as_index = False) ['MAX_PTS_AFFIL']. Fillna (method = 'ffill')' – ayhan
Пробовал это, но не работает; Я получаю 'TypeError: несовместимый индекс вставленного столбца с индексом фрейма' – user791411