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

pandas DataFrame滑动窗口全为1时如何仅保留首个元素为1?

解决方法

核心逻辑是判断当前行及后续连续两行的Input值是否全部为1,满足条件则当前行标记为1,否则为0,代码实现如下:

import pandas as pd

# 构造你提供的示例数据
df = pd.DataFrame({
    'Time': [11, 22, 33, 44, 55, 66, 77, 88, 99, 1010, 1111, 1212, 1313, 1414, 1515],
    'Input': [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0]
})

# 计算目标列
df['What_I_Want'] = (
    df['Input'].eq(1) & 
    df['Input'].shift(-1).eq(1) & 
    df['Input'].shift(-2).eq(1)
).astype(int).fillna(0)

# 输出结果查看
print(df)

逻辑说明

  • shift(-n) 表示将整列数据向上偏移n行,shift(-1)取当前行的下一行值,shift(-2)取当前行的下下行值
  • 三个条件同时成立,代表以当前行为首的3元素滑动窗口所有值都是1,此时当前行标记为1
  • 末尾两行因为无法组成长度为3的窗口,偏移后会出现空值,直接填充为0即可
  • 运行后得到的What_I_Want列和你给出的期望输出完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:36:03