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

Pandas特殊插值实现:将NaN行与目标行替换为均分后的值

自定义插值替换需求

示例输入表格

LabelValue
A1
B2
CNaN
DNaN
ENaN
F12

示例输出表格

LabelValue
A1
B2
C3
D3
E3
F3

处理逻辑

  • 针对连续的NaN区间,取该区间后续第一个非NaN有效值
  • 计算替换值:后续有效值 ÷(该区间NaN的数量 + 1),示例中为 12 ÷ (3+1) = 3
  • 用计算得到的替换值填充该区间所有NaN,同时替换掉用于计算的那个后续有效值

现有实现代码

import pandas as pd
import numpy as np

test = pd.DataFrame({'Label': ['A', 'B', 'C', 'D', 'E', 'F','G','H','I'],
                     'Value': [1, 2, None, None, None, 12,None,None,4]})

test['break'] = np.where(test['Value'].notnull(),1,0)
test['group'] = test['break'].shift().fillna(0).cumsum()
test['Value2'] = test.groupby('group').Value.apply(lambda x: x.fillna( x.max() / len(x)))

for row in range(0,test.shape[0]):
    if test['break'].iloc[row] == 0 and test['break'].iloc[row+1] == 1:
        test.at[row+1, 'Value2'] = test['Value2'].iloc[row]

优化需求

df.interpolate()无法实现该自定义逻辑,现有代码可完成功能但不够简洁优雅,寻求更优的Pandas解决方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:01:46