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

如何在pandas中使用前后非nan值的平均值填充列中的nan值

实现方法

你可以结合pandas的前向填充ffill()和后向填充bfill()方法实现需求,核心逻辑是先分别取每个空值对应的最近前序非空值、最近后序非空值,再对两者取平均即可。

完整示例代码

import pandas as pd
import numpy as np

# 构造示例数据
df = pd.DataFrame({'Column A': [5, np.nan, np.nan, 15]})

# 指定需要处理的列
target_col = 'Column A'

# 核心填充逻辑
df[target_col] = (df[target_col].ffill() + df[target_col].bfill()) / 2

print(df)

输出结果

Column A
0       5.0
1      10.0
2      10.0
3      15.0

额外说明

如果你的数据存在列开头就有空值或者列结尾有空值的情况,这部分空值会因为不存在前序/后序非空值导致计算后还是空值,你可以根据自己的需求补充额外的填充规则,比如开头空值直接用最近的后序非空值填充、结尾空值直接用最近的前序非空值填充,只需要在核心逻辑后面追加fillna步骤即可:

df[target_col] = df[target_col].fillna(df[target_col].bfill()).fillna(df[target_col].ffill())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:57:04