You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用列内已知非空值向前填充DataFrame中NaN值的实现方法

高效实现方案

直接使用pandas内置的ffill()(前向填充)方法即可,该方法的逻辑完全匹配你的需求:自动取最近的非空Id值填充后续连续空值,直到遇到下一个非空Id值。

代码示例

import pandas as pd
import numpy as np

# 构造示例数据,可替换为你自己的DataFrame
df = pd.DataFrame({
    'Id': [1, np.nan, np.nan, 2, np.nan, 3, np.nan, np.nan, np.nan],
    '无关列1': ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'],
    '无关列2': [10, 20, 30, 40, 50, 60, 70, 80, 90]
})

# 仅需一行代码完成Id列填充
df['Id'] = df['Id'].ffill()

效果说明

  • 原Id列值:[1, nan, nan, 2, nan, 3, nan, nan, nan]
  • 填充后Id列值:[1, 1, 1, 2, 2, 3, 3, 3, 3]
  • 该操作为向量化实现,底层基于C语言运行,比Python层的for循环效率高10~100倍,即使是百万级行数据也能快速处理,且不会修改其他无关列的内容。
  • 若需要限制最多连续填充的空值数量,可添加limit参数:df['Id'] = df['Id'].ffill(limit=最大填充数)

内容的提问来源于stack exchange,提问作者Prince Hermit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:27:02