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

如何为Pandas DataFrame特定行按不同策略填充缺失值?

分区域填充DataFrame缺失值的实现方案

不需要循环处理行,直接通过iloc切片定位不同行区域,结合对应的填充方法即可实现,以下是具体逻辑和代码:

关键语法纠正

你之前用df.iloc(1:1000)是错误的,Pandas中iloc的切片语法是方括号[],正确的前1000行切片是df.iloc[:1000](Pandas索引从0开始,[:1000]对应第0到999行,共1000行)。

分步实现逻辑

  1. 前1000行:均值填充

    • 计算前1000行每列的均值(仅基于该区域的非缺失值计算)
    • 用该均值填充对应区域的缺失值,最后赋值回原DataFrame的对应位置
    # 计算前1000行的列均值
    top_mean = df.iloc[:1000].mean()
    # 填充并赋值
    df.iloc[:1000] = df.iloc[:1000].fillna(top_mean)
    
  2. 中间1000行:ffill填充

    • 定位第1000到1999行(iloc[1000:2000])
    • 使用ffill()(前向填充,用前一行的非缺失值填充当前空值),指定按行方向填充(axis=0)
    # 前向填充中间区域并赋值
    df.iloc[1000:2000] = df.iloc[1000:2000].ffill(axis=0)
    
  3. 最后500行:bfill填充

    • 定位第2000到2499行(iloc[2000:])
    • 使用bfill()(后向填充,用后一行的非缺失值填充当前空值)
    # 后向填充末尾区域并赋值
    df.iloc[2000:] = df.iloc[2000:].bfill(axis=0)
    

完整代码示例

# 假设你的DataFrame名为df
# 处理前1000行
top_mean = df.iloc[:1000].mean()
df.iloc[:1000] = df.iloc[:1000].fillna(top_mean)

# 处理中间1000行
df.iloc[1000:2000] = df.iloc[1000:2000].ffill(axis=0)

# 处理最后500行
df.iloc[2000:] = df.iloc[2000:].bfill(axis=0)

内容的提问来源于stack exchange,提问作者Marharyta Kalynchuk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:53:11