约定第一行代码

import numpy as np
import pandas as pd
from numpy import nan as NaN

填充缺失数据

fillna是最主要的处理方法

df1=pd.DataFrame([[1,2,3],[NaN,NaN,2],[NaN,NaN,NaN],[8,8,NaN]])
df1
012
01.02.03.0
1NaNNaN2.0
2NaNNaNNaN
38.08.0NaN

用常数填充

df1.fillna(100)

代码结果

012
01.02.03.0
1100.0100.02.0
2100.0100.0100.0
38.08.0100.0

通过字典填充不同的常数

df1.fillna({0:10,1:20,2:30})

代码结果

012
01.02.03.0
110.020.02.0
210.020.030.0
38.08.030.0

传入inplace = True 直接修改原对象

大多数对Series/DataFrame对象处理的方法,不加 inplace = True
都对原对象不起修改作用

df1.fillna(0,inplace=True)
df1
012
01.02.03.0
10.00.02.0
20.00.00.0
38.08.00.0

传入method = " "改变插值的方式

df2=pd.DataFrame(np.random.randint(0,10,(5,5)))
df2.iloc[1:4,3]=NaN;df2.iloc[2:4,4]=NaN
df2

代码结果

01234
06624.01.0
1470NaN5.0
2656NaNNaN
3199NaNNaN
44815.09.0
df2.fillna(method='ffill')
#用前面的值来填充
#使用bfill就是用后面的值来填充

代码结果

01234
06624.01.0
14704.05.0
26564.05.0
31994.05.0
44815.09.0

传入limit=” “限制填充个数

df2.fillna(method='bfill',limit=2)

代码结果

01234
06624.01.0
1470NaN5.0
26565.09.0
31995.09.0
44815.09.0

传入axis ="" 修改填充的方向

这种填充方式是以左边的值填充到右边

df2.fillna(method="ffill",limit=1,axis=1)

代码结果

01234
06.06.02.04.01.0
14.07.00.00.05.0
26.05.06.06.0NaN
31.09.09.09.0NaN
44.08.01.05.09.0

世界因代码而改变 Peace Out
世界因代码而改变 Peace Out
最后修改:2020 年 10 月 07 日 03 : 20 PM
如果觉得我的文章对你有用,请随意赞赏