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

Pandas滚动窗口技术问题:返回未应用额外函数的滚动窗口DataFrame及过滤非NaN值不足元素

问题2:滚动窗口内非NaN值数量不足时替换为NaN

你之前的代码报错,是因为rolling.apply()默认要求返回聚合后的标量或一维结果,直接返回整个窗口的x不符合它的预期。我们换个思路,先算每个窗口的非NaN数量,再根据阈值过滤就行:

情况1:按每列单独判断非NaN数量

如果需要针对每列单独校验(某列的滚动窗口内非NaN数≥min_periods,才保留该列当前值):

window_size = 4
min_periods = 2

# 计算每列的滚动非NaN计数
col_rolling_count = df.rolling(window_size).count()

# 仅保留计数达标的列值,否则设为NaN
result = df.where(col_rolling_count >= min_periods)

情况2:按整个窗口总非NaN数判断

如果要求整个滚动窗口的非NaN总数≥min_periods,才保留当前行的所有值:

window_size = 4
min_periods = 2

# 计算每个滚动窗口内的非NaN总数
total_rolling_count = df.rolling(window_size).count().sum(axis=1)

# 总数达标则保留原值,否则整行设为NaN
result = df.where(total_rolling_count >= min_periods, np.nan)

这两种方法既避开了apply()的限制,运行效率也比自定义lambda更高,你可以根据实际需求选其中一种。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 10:29:09