一、简介
ffill(forward fill)是Pandas库中DataFrame和Series对象的一个函数,用于填充缺失值(NaN)。它通过使用前面的有效值来填充后续的缺失值,也被称为"前向填充"。
二、语法和参数
1
|
DataFrame.ffill(axis=None, inplace=False, limit=None, downcast=None)
|
主要参数:
- axis:填充的方向。{0 or ‘index’, 1 or ‘columns’},默认为0。
- inplace:是否在原对象上进行修改,默认为False。
- limit:指定连续填充的最大数量,默认为None。
- downcast:可选,将结果转换为指定的dtype,默认为None。
三、实例
3.1 基本使用
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import pandas as pd
import numpy as np
# 创建一个包含NaN的DataFrame
df = pd.DataFrame({
'A': [1, 2, np.nan, np.nan, 5],
'B': [np.nan, 2, 3, np.nan, 5],
'C': [1, 2, 3, 4, 5]
})
print("原始DataFrame:")
print(df)
print("\n使用ffill()后的DataFrame:")
print(df.ffill())
|
输出:
原始DataFrame:
A B C
0 1.0 NaN 1
1 2.0 2.0 2
2 NaN 3.0 3
3 NaN NaN 4
4 5.0 5.0 5
使用ffill()后的DataFrame:
A B C
0 1.0 NaN 1
1 2.0 2.0 2
2 2.0 3.0 3
3 2.0 3.0 4
4 5.0 5.0 5
3.2 指定axis参数
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': [1, 2, np.nan, np.nan, 5],
'B': [np.nan, 2, 3, np.nan, 5],
'C': [1, 2, 3, 4, 5]
})
print("原始DataFrame:")
print(df)
print("\n使用ffill(axis=1)后的DataFrame:")
print(df.ffill(axis=1))
|
输出:
原始DataFrame:
A B C
0 1.0 NaN 1
1 2.0 2.0 2
2 NaN 3.0 3
3 NaN NaN 4
4 5.0 5.0 5
使用ffill(axis=1)后的DataFrame:
A B C
0 1.0 1.0 1.0
1 2.0 2.0 2.0
2 NaN 3.0 3.0
3 NaN NaN 4.0
4 5.0 5.0 5.0
3.3 使用limit参数
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': [1, np.nan, np.nan, np.nan, 5],
'B': [np.nan, 2, np.nan, np.nan, 5],
'C': [1, 2, 3, 4, 5]
})
print("原始DataFrame:")
print(df)
print("\n使用ffill(limit=1)后的DataFrame:")
print(df.ffill(limit=1))
|
输出:
原始DataFrame:
A B C
0 1.0 NaN 1
1 NaN 2.0 2
2 NaN NaN 3
3 NaN NaN 4
4 5.0 5.0 5
使用ffill(limit=1)后的DataFrame:
A B C
0 1.0 NaN 1
1 1.0 2.0 2
2 NaN 2.0 3
3 NaN NaN 4
4 5.0 5.0 5
四、注意事项
- ffill()函数只能填充NaN值,对于其他类型的缺失值(如None)可能无效。
- 使用inplace=True可以直接在原DataFrame上进行修改,但这会改变原始数据,使用时需谨慎。
- ffill()函数在处理大型数据集时可能会消耗较多内存和时间,特别是在使用axis=1时。
- 当使用limit参数时,只有指定数量的连续NaN值会被填充,超出限制的NaN值将保持不变。
- ffill()函数是fillna(method='ffill')的简写形式,两者功能相同。
- 在时间序列数据处理中,ffill()特别有用,可以用来填充缺失的时间点数据。
|