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

如何用Pandas高效填充DataFrame最后一行的NaN值(取前序最近非空值)

Pandas:高效填充最后一行的NaN值(取列内最近非NaN值)

场景与原始数据

数据生成代码

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0, 10, (10, 10)), columns=list('ABCDEFGHIJ'))
df[df > 5] = np.nan

for i in range(10):
    df.iloc[i, i % 10] = np.nan

原始DataFrame

A    B    C    D    E    F    G    H    I    J
0  NaN  2.0  NaN  0.0  5.0  4.0  1.0  NaN  NaN  0.0
1  3.0  NaN  NaN  NaN  2.0  0.0  1.0  1.0  NaN  1.0
2  NaN  5.0  NaN  5.0  NaN  0.0  5.0  0.0  4.0  NaN
3  2.0  NaN  NaN  NaN  3.0  5.0  NaN  NaN  NaN  5.0
4  NaN  2.0  NaN  0.0  NaN  NaN  2.0  NaN  2.0  0.0
5  NaN  NaN  NaN  2.0  NaN  NaN  NaN  NaN  0.0  5.0
6  NaN  NaN  0.0  NaN  2.0  NaN  NaN  1.0  NaN  NaN
7  NaN  5.0  1.0  2.0  4.0  NaN  3.0  NaN  3.0  2.0
8  1.0  5.0  1.0  NaN  3.0  NaN  1.0  NaN  NaN  5.0
9  0.0  NaN  NaN  NaN  3.0  NaN  2.0  3.0  5.0  NaN

需求

仅对最后一行的NaN值进行填充,填充规则为取对应列中前序最近的非NaN值。由于DataFrame数据量较大,要求实现方式最节省内存、执行速度最快。

高效解决方案

利用Pandas内置的矢量化向前填充(ffill)功能,仅生成最后一行所需的填充值,避免全量修改DataFrame:

# 生成每列前序最近非NaN值的填充结果,仅提取最后一行
fill_values = df.ffill().iloc[-1]
# 用对应值填充最后一行的NaN
df.iloc[-1] = df.iloc[-1].fillna(fill_values)

方案优势

  • 速度快:ffill是Pandas底层优化的矢量化操作,比Python层面的循环、apply效率高几个数量级;
  • 内存省:仅生成最后一行的填充值,无需对整个DataFrame进行修改或复制;
  • 精准性:仅修改最后一行的NaN值,完全保留其他行的原始数据。

最终结果

A    B    C    D    E    F    G    H    I    J
0  NaN  2.0  NaN  0.0  5.0  4.0  1.0  NaN  NaN  0.0
1  3.0  NaN  NaN  NaN  2.0  0.0  1.0  1.0  NaN  1.0
2  NaN  5.0  NaN  5.0  NaN  0.0  5.0  0.0  4.0  NaN
3  2.0  NaN  NaN  NaN  3.0  5.0  NaN  NaN  NaN  5.0
4  NaN  2.0  NaN  0.0  NaN  NaN  2.0  NaN  2.0  0.0
5  NaN  NaN  NaN  2.0  NaN  NaN  NaN  NaN  0.0  5.0
6  NaN  NaN  0.0  NaN  2.0  NaN  NaN  1.0  NaN  NaN
7  NaN  5.0  1.0  2.0  4.0  NaN  3.0  NaN  3.0  2.0
8  1.0  5.0  1.0  NaN  3.0  NaN  1.0  NaN  NaN  5.0
9  0.0  5.0  1.0  2.0  3.0  5.0  2.0  3.0  5.0  5.0

内容的提问来源于stack exchange,提问作者Zheng Xiaodong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 23:17:22