Причина, по которой вы получаете эту ошибку, заключается в том, что вы используете inplace
в fillna
.К сожалению, документация там неправильная:
Возвращает: заполнено: Серия
Это показывает иначе, хотя:
df = pd.DataFrame({'a': [3]})
>>> type(df.a.fillna(6, inplace=True))
NoneType
>>> type(df.a.fillna(6))
pandas.core.series.Series
Так что, когда вы назначаете
df = df[df['PRODUCT'] == product]['RANK'].fillna((df[df['PRODUCT'] == product]['RANK'].mean()), inplace=True)
вы присваиваете df = None
, и следующая итерация завершается с ошибкой, которую вы получаете.
Вы можете опустить присваивание df =
или, что еще лучше, использоватьдругой ответ.