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

Pandas如何用最近非空值填充列,直到遇到下一个不同值?

向量化填充DataFrame分类标记列方案

问题场景

现有如下结构的DataFrame(Type列仅在分类起始行标记,后续行缺失):

Index   A   B   C   Type
    0   5   1   4      a
    1   4   1  23
    2   1   4   5
    3  16   2  19      c
    4   3   4   5
    5   8   2   4
    6   3   3   3
    7   0   9   2    b-2
    8   3   2   1
    9   1   0   5

需要将Type列缺失值填充为最近的上方标记值,转换为:

Index   A   B   C   Type
    0   5   1   4      a
    1   4   1  23      a
    2   1   4   5      a
    3  16   2  19      c
    4   3   4   5      c
    5   8   2   4      c
    6   3   3   3      c
    7   0   9   2    b-2
    8   3   2   1    b-2
    9   1   0   5    b-2

要求适配十万行以上大数据量,采用向量化方案,避免逐行遍历。

解决方案

利用pandas内置的ffill()(向前填充)方法,该方法为底层优化的向量化操作,无需循环,处理效率极高。

步骤代码

  1. 读取CSV文件(确保Type列缺失值被正确识别):
import pandas as pd

# 读取文件,自动识别空值
df = pd.read_csv('your_file.csv', keep_default_na=True)
  1. 执行向前填充:
# 向量化填充Type列
df['Type'] = df['Type'].ffill()

关键说明

  • ffill()会将每一个缺失值替换为最近的非缺失值(上方),完全匹配需求中的分类标记延续逻辑
  • 该操作是pandas底层C实现的向量化运算,处理十万级数据仅需毫秒级时间,批量处理数十个文件也能高效完成
  • 若Type列的空值是空白字符串而非NaN,可先转换为NaN再填充:
df['Type'] = df['Type'].replace('', pd.NA).ffill()

内容的提问来源于stack exchange,提问作者Ben S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:52:43