使用 fillna 后更改未保存

changes not saved after using fillna

我在一列中有几个空值:

print(df['col'].isnull().sum(axis = 0))

我正在尝试这样替换它们:

df['col'].fillna(value='no_val')
#df['col'].value_counts()
print(df['col'].isnull().sum(axis = 0))

但它不起作用,并且在使用 .fillna 后仍然显示相同数量的空值。如果我这样改变它:

df = df['col'].fillna(value='no_val')

它会在下一行开始给我一个 'col' 的关键错误。我做错了什么?

这里:

df['col'].fillna(value='no_val')

您不会用空值填充的 df['col'] 替换,您只需填充空值并丢弃结果。

这里:

df = df['col'].fillna(value='no_val')

您将单个列(pd.Series 对象)重新分配给变量 df,这意味着它不再有列。

您应该做的是将返回的空值填充列 (pd.Series) 分配给相应的列 (pd.Series),如:

df['col'] = df['col'].fillna(value='no_val')

您可以在 fillna 方法中使用 inplace=True 来反映输出

df['col'].fillna(value='no_val',inplace=True)

或者您可以重新评估专栏

df['col']= df['col'].fillna(value='no_val')