Python pandas fillna方法实现部分自动填充功能详解

小林子
小林子
发布时间:2026-10-12 | 2人浏览过
原创

本文介绍如何利用Python pandas库中的fillna方法处理数据缺失值。通过value参数指定具体填充数值,利用method参数(ffill/bfill)控制前后向自动填充方向,并结合limit参数限制最大填充行数。文章包含读取Excel、字典映射填充及限制填充行数的完整代码示例,帮助开发者高效完成数据清洗任务。

利用fillna处理缺失值

在数据处理过程中,经常遇到包含 NaN(Not a Number)的数据集。pandas 提供了 fillna 方法,用于识别并填充这些缺失值。该方法主要依赖三个核心参数:value、method 和 limit,分别用于指定填充的具体数值、控制自动填充的方向以及限制填充的最大行数。

基础填充:指定具体数值

最直接的方式是使用 value 参数,将所有的 NaN 替换为指定的固定值。例如,将缺失值全部填充为 0:

>>> df = pd.read_excel(r'D:/myExcel/1.xlsx')
>>> df
  name Chinese Chinese.1  id
0  bob  12.0   12 123.0
1 millor  NaN   32 124.0
2 jiken  89.0   89 NaN
3 jiken  89.0   89 125.0
# 默认将所有值均填充为0
>>> df.fillna(0)
  name Chinese Chinese.1  id
0  bob  12.0   12 123.0
1 millor  0.0   32 124.0
2 jiken  89.0   89 0.0
3 jiken  89.0   89 125.0

若不同列需要不同的填充值,可以传入一个字典。字典的键为列名,值为对应的填充数:

# 也可以通过字典控制每列传什么值
>>> my_dict = {'Chinese' : 92, 'id' : 98}
>>> df.fillna(my_dict)
  name Chinese Chinese.1  id
0  bob  12.0   12 123.0
1 millor  92.0   32 124.0
2 jiken  89.0   89 98.0
3 jiken  89.0   89 125.0

自动填充:控制填充方向

当 value 参数未指定时,可以使用 method 参数进行前后向填充。该参数默认值为 None,即不自动填充。

  • 向下填充(ffill/pad):使用 'ffill' 或 'pad',用前一个非空值填充当前的 NaN。
  • 向上填充(bfill/backfill):使用 'bfill' 或 'backfill',用后一个非空值填充当前的 NaN。

以下是向下和向上填充的示例:

# 向下
>>> df.fillna(method='ffill')
  name Chinese Chinese.1  id
0  bob  12.0   12 123.0
1 millor  12.0   32 124.0
2 jiken  89.0   89 124.0
3 jiken  89.0   89 125.0

# 向上
>>> df.fillna(method='bfill')
  name Chinese Chinese.1  id
0  bob  12.0   12 123.0
1 millor  89.0   32 124.0
2 jiken  89.0   89 125.0
3 jiken  89.0   89 125.0

限制填充行数

在实际场景中,可能不希望无限向下或向上填充。此时可以使用 limit 参数,限制自动填充的最大连续行数。例如,限制向上填充最多只填充 1 行:

# 限制自动填充最大填充1行。
>>> df.fillna(method = 'bfill', limit=1)
  name Chinese Chinese.1  id
0  bob  12.0   12 123.0
1 millor  89.0   32 124.0
2 jiken  89.0   89 125.0
3 jiken  89.0   89 125.0

验证缺失值

在填充前或填充后,可以使用 isna() 方法检查数据集中哪些位置仍为缺失值。该方法返回一个布尔型 DataFrame,True 表示该位置为 NaN,False 表示有值:

>>> df.isna()
 name Chinese Chinese.1  id
0 False False  False False
1 False  True  False False
2 False False  False True
3 False False  False False

以上就是利用pandas fillna方法实现部分自动填充功能的详细内容,更多关于Python pandas数据清洗的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表