📅  最后修改于: 2023-12-03 15:08:09.313000             🧑  作者: Mango
在数据分析中,我们通常需要对缺失的值进行处理。Pandas中提供了许多函数来处理缺失值的情况。其中就包括填充空列。
填充空列指的是将DataFrame中的空列(缺失值)替换为特定的值。
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
value
:用于填充空列的值。可以是标量,Series,DataFrame或者字典类型。method
:指定一种填充方式。可以是ffill
(向前填充)或bfill
(向后填充)。axis
:指定填充的轴。可以是0或1,0表示列,1表示行。inplace
:是否修改原始数据,默认为False。limit
:指定连续空列填充的最大个数。downcast
:指定类型转换方式。首先创建一个包含空列的DataFrame:
import pandas as pd
data = {'A': [1, 2, 3, None, None], 'B': [4, None, 6, None, 8]}
df = pd.DataFrame(data)
print(df)
输出结果为:
A B
0 1.0 4.0
1 2.0 NaN
2 3.0 6.0
3 NaN NaN
4 NaN 8.0
我们可以使用fillna()
函数来将所有的空列填充为特定的值:
df.fillna(0)
输出结果为:
A B
0 1.0 4.0
1 2.0 0.0
2 3.0 6.0
3 0.0 0.0
4 0.0 8.0
如果我们希望使用前一个非空列的值来填充空列,可以使用method
参数指定ffill
:
df.fillna(method='ffill')
输出结果为:
A B
0 1.0 4.0
1 2.0 4.0
2 3.0 6.0
3 3.0 6.0
4 3.0 8.0
如果我们希望使用后一个非空列的值来填充空列,可以使用method
参数指定bfill
:
df.fillna(method='bfill')
输出结果为:
A B
0 1.0 4.0
1 2.0 6.0
2 3.0 6.0
3 NaN 8.0
4 NaN 8.0
上面的例子中,fillna()
函数默认按列填充空列。如果需要按行填充,可以使用axis
参数来指定轴:
df.fillna(method='ffill', axis=1)
输出结果为:
A B
0 1.0 4.0
1 2.0 2.0
2 3.0 6.0
3 NaN NaN
4 NaN 8.0
有时候,我们不希望对所有的空列都进行填充,可以使用limit
参数来限制连续填充的空列个数:
df.fillna(method='ffill', limit=1)
输出结果为:
A B
0 1.0 4.0
1 2.0 4.0
2 3.0 6.0
3 3.0 NaN
4 NaN 8.0
上面的例子中,fillna()
函数会返回一个新的DataFrame,原始的DataFrame并没有被修改。如果需要直接修改原始的DataFrame,可以将inplace
参数设置为True
:
df.fillna(method='ffill', inplace=True)
这样,原始的DataFrame就被直接修改了。