采用DataFrame.fillna填充Nan值(比如用数值1.0填充NaN)的时候如果采用一下代码:
df.fillna(1.0) #对空值单元进行插值
df
executed in 34ms, finished 08:52:27 2020-03-20
name year gdp
0 安徽 1949 NaN
1 北京 1949 NaN
2 福建 1949 NaN
采用以上代码 ,可以看到NaN并没有发生改变。
如果采用下面这种方式:
print(df.fillna(1.0))
executed in 30ms, finished 08:55:00 2020-03-20
name year gdp
0 安徽 1949 1.00
1 北京 1949 1.00
2 福建 1949 1.00
可以看到数值被填充进去了,可是再次对df进行打印:
print(df)
name year gdp
0 安徽 1949 NaN
1 北京 1949 NaN
2 福建 1949 NaN
可以发现,数值并没有填充进去,还是NaN值。
那么真正的解决方法是什么呢?
采用DataFrame.fillna填充Nan值(比如用数值1.0填充NaN)的时候需采用一下代码:
df.fillna(1.0,inplace=True)
注意:凡是会对原数组做出修改并放回一个新数组的,往往都有一个inplace可选参数。如果手动设定为True(默认为False),那么原数组直接就被替换掉。也就是说,采用inplace=True之后,原数组对应的内存值直接改变。
而采用inplace=False之后,原数组对应的内存值并不改变。