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

如何在pandas DataFrame中按衰减率向前填充NaN值

实现方法

你可以通过计算每个空值距离上一个非空值的步长,结合前向填充值乘以衰减系数的步长次方实现,完整代码如下:

import pandas as pd
import numpy as np

# 示例数据构造
df1 = pd.DataFrame({
                    'Column1':[1, 'NaN', 3, 'NaN'], 
                    'Column2':[5, 6, 7, 8], 
                    'Column3':[-9, -10, 'NaN', 'NaN'], 
                    'Column4':[13, 15, 'NaN', 'NaN']
                    })
df1 = df1.replace('NaN',np.nan)

# 核心计算逻辑
# 1. 计算每个位置距离上一个非空值的步长,非空位置步长为0
step = df1.isnull().groupby(df1.notnull().cumsum()).cumcount()
# 2. 前向填充得到基准值
ffill_base = df1.ffill()
# 3. 基准值乘以 0.9 的步长次方得到最终结果
result = ffill_base * (0.9 ** step)

# 如需保留两位小数可执行以下代码
result = result.round(2)
print(result)

输出结果完全匹配预期:

Column1  Column2  Column3  Column4
0      1.0        5     -9.0    13.00
1      0.9        6    -10.0    15.00
2      3.0        7     -9.0    13.50
3      2.7        8     -8.1    12.15

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:06:03