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

Python如何用上下相邻行均值填充pandas数据框缺失值

pandas DataFrame中将"-"替换为上下相邻行均值的实现方案

实现步骤

  • 第一步:将占位符"-"转换为pandas可识别的空值
    因为"-"是字符串格式,无法直接参与数值计算,首先要把所有目标位置的"-"替换为np.nan,同时确保对应列是数值类型:
    import pandas as pd
    import numpy as np
    
    # 全表替换的写法
    df = df.replace('-', np.nan)
    # 如果仅需要处理指定列,用下面的写法,替换列名列表即可
    # target_cols = ['列1', '列2', '列3']
    # df[target_cols] = df[target_cols].replace('-', np.nan).astype(float)
    
  • 第二步:按上下相邻值均值填充空值
    pandas自带的线性插值方法刚好匹配「取上下相邻有效值均值填充」的需求,根据你的数据场景选对应写法即可:
    # 场景1:所有"-"都是孤立存在(不会连续出现2个及以上的"-"),直接插值即可
    df = df.interpolate(method='linear', limit_direction='both')
    
    # 场景2:存在连续"-",仅给上下都有有效值的单个"-"填均值,连续"-"保留为空,加limit=1限制
    df = df.interpolate(method='linear', limit=1, limit_direction='both')
    

注意事项

  • 首尾行如果是"-",因为缺少上方/下方的相邻值,上述方法默认不会填充这部分内容,如果需要处理首尾空值,可以额外搭配ffill()(用上值填充)或bfill()(用下值填充)补全
  • 插值前务必确认目标列已经转为数值类型,否则会触发类型报错
  • 简单效果验证:某列原值为[4, '-', 8],经过上述处理后中间值会被填充为(4+8)/2=6,完全符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.15 16:16:01