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

如何将列值作为rolling或shift方法的参数传入?

问题原因

rolling()的window参数和shift()的periods参数仅支持标量值,无法直接传入Series(即每行使用不同的窗口大小/偏移量),这是你代码报错的核心原因。

解决方案

基于你的数据和需求,提供两种场景的实现方式:

1. 按pos指定偏移量实现shift效果

逐行计算偏移后的值,偏移后索引小于0时返回NaN:

df['shift_result'] = [
    df.A.iloc[i - p] if i - p >= 0 else np.nan 
    for i, p in enumerate(df.pos)
]

2. 按pos指定窗口大小实现rolling max效果

假设pos代表窗口包含当前行在内的向前行数(比如pos=2取当前行+前2行共3行的最大值):

df['rolling_max'] = [
    df.A.iloc[max(0, i - p):i+1].max() 
    for i, p in enumerate(df.pos)
]

如果pos=0需要返回NaN,可调整为:

df['rolling_max'] = [
    df.A.iloc[max(0, i - p):i+1].max() if p != 0 else np.nan 
    for i, p in enumerate(df.pos)
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:40:27