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

如何在Pandas中用真实值除以(前置NA数量+1)回填列值?

实现方法

可以通过以下步骤完成需求:

  1. 关联真实值到对应区间:先用bfill()将后续的真实值向前填充到前面的NA位置,再用ffill()兜底处理开头的NA,确保每个位置都能对应到所属区间的真实值。
  2. 计算区间长度:按填充后的真实值分组,计算每个组的行数(即该真实值需要覆盖的NA数量+1)。
  3. 生成填充结果:用每个区间的真实值除以对应区间的长度,得到最终填充值。

完整代码如下:

import pandas as pd
import numpy as np

test_df = pd.DataFrame({'a':[np.nan,np.nan,np.nan,4,np.nan,np.nan,6]})

# 步骤1:关联真实值到对应区间
filled_real = test_df['a'].bfill().ffill()

# 步骤2:计算每个组的大小
group_sizes = test_df.groupby(filled_real)['a'].transform('size')

# 步骤3:计算并替换结果
test_df['a'] = filled_real / group_sizes

print(test_df)

运行后输出:

a
0  1.0
1  1.0
2  1.0
3  1.0
4  2.0
5  2.0
6  2.0

也可以用链式写法简化代码:

test_df['a'] = (test_df['a'].bfill().ffill() 
                / test_df.groupby(test_df['a'].bfill().ffill())['a'].transform('size'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:15:35