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

Pandas实现:前列为指定值时填充后续连续空值(大规模数据集)

高效处理大规模Pandas数据集的填充需求

需求说明

处理含260列、约130万行的大规模数据集,实现逻辑:对每一行,若某列的值为"NA",则将该列之后的连续空字符串列填充为"NA",直至遇到非空值列为止。

示例数据

原始数据集

import pandas as pd
data=[[1,'NA','','','','Inactive',''],
                 [2,'NA','','Active','',''],
                 [3,'Active','Active','','',''],
                 [4,'Inactive','','','',''],
                 [5,'NA','','','','Active']] 
df1=pd.DataFrame(data,columns=['ID','S1','S2','S3','S4','S5'])

期望结果数据集

import pandas as pd
data=[[1,'NA','NA','NA','NA','Inactive',],
                 [2,'NA','NA','Active','',''],
                 [3,'Active','Active','','',''],
                 [4,'Inactive','','','',''],
                 [5,'NA','NA','NA','NA','Active']] 
df1=pd.DataFrame(data,columns=['ID','S1','S2','S3','S4','S5'])

尝试的无效代码

for column in df1.columns:
    if (df1[column-1]=="NA").any():
        df1[column]=df1.fillna("NA", inplace=True)

高效实现方案

针对大规模数据集,优先采用矢量化操作避免逐行循环,保证处理效率:

import pandas as pd

# 加载原始数据(示例用给定数据)
data=[[1,'NA','','','','Inactive',''],
                 [2,'NA','','Active','',''],
                 [3,'Active','Active','','',''],
                 [4,'Inactive','','','',''],
                 [5,'NA','','','','Active']] 
df1=pd.DataFrame(data,columns=['ID','S1','S2','S3','S4','S5'])

# 1. 创建标记矩阵:标记值为"NA"的位置
na_mask = df1 == "NA"
# 2. 创建标记矩阵:标记非空字符串的位置(排除"NA")
non_empty_mask = (df1 != "") & ~na_mask
# 3. 计算每行的填充触发状态:遇到"NA"后保持True,直到遇到非空值
trigger = na_mask.cumsum(axis=1) > 0
# 4. 计算每行的填充终止位置:从右往左累积标记终止位置,再反转回原顺序
close_cumsum = non_empty_mask.iloc[:, ::-1].cummax(axis=1).iloc[:, ::-1]
# 5. 确定需要替换的位置:触发填充且未到终止位置,同时当前值为空字符串
replace_mask = trigger & ~close_cumsum & (df1 == "")

# 6. 执行填充操作
df1.loc[replace_mask] = "NA"

print(df1)

代码说明

  • 所有操作均为Pandas矢量化运算,避免逐行循环,处理130万级数据效率远高于apply(axis=1)
  • na_mask标记触发填充的起始点
  • non_empty_mask标记填充的终止点(遇到非"NA"的非空值时停止)
  • trigger控制填充状态的开启,close_cumsum控制填充状态的关闭
  • 最终通过replace_mask精准定位需要替换为空字符串的位置,批量替换为"NA"

内容的提问来源于stack exchange,提问作者Amish Baghel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 22:17:42