如何用 pandas 中的字符串值替换 NaN

How to replace NaN with a string value in pandas

我正在研究 Kaggle Housing Prices 项目。 我已经尝试了几个小时来替换字符串列 'BsmtQual' 中的 NaN 值。 对于 BsmtQual 列中具有 NaN 值的 SalePrice 小于 120000 的所有房屋,我想将其替换为 '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)

如何将这些房屋的 pandas 中的 NaN 值替换为 'Fa' 字符串?

不要使用 inplace:

df.loc[Fa_rng & df['BsmtQual'].isna(),'BsmtQual'] = 'Fa'