Я работаю над проектом Kaggle Housing Prices. В течение нескольких часов я пытался заменить значения NaN в строковом столбце «BsmtQual». Для всех домов с SalePrice менее 120000, у которых есть значение NaN в столбце BsmtQual, я хочу заменить его на «Fa».
df - мой фреймворк данных.
Fa_rng = df['SalePrice'] < 120000
Я пробовал все ниже, и они ничего не изменили.
df.loc[Fa_rng,'BsmtQual'].fillna('Fa',inplace=True)
df.loc[Fa_rng,'BsmtQual'].replace('NaN','Fa',inplace=True)
df.loc[Fa_rng,'BsmtQual'].str.replace('NaN','Fa')
Этот получает предупреждение о том, что «значение пытается быть установлено для копии среза из DataFrame» и ничего не делает.
df.loc[(df['BsmtQual'].isna()) & (df['SalePrice'] < 120000)].fillna('Fa',inplace=True)
Как заменить значение NaN в пандах для этих домов на строку «Fa»?
Не используйте inplace
:
df.loc[Fa_rng & df['BsmtQual'].isna(),'BsmtQual'] = 'Fa'