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

如何高效检测Pandas DataFrame中按钮从0变1的触发行?

高效检测按钮从0变为1的触发行(Pandas)

针对400万行、44列的大数据量场景,矢量化操作是最优选择,完全避免低效的apply逐行处理,具体步骤如下:

  1. 生成移位对比数据集
    用shift(1)获取上一行的状态数据,实现当前行与上一行的逐列对比:

    prev_df = df.shift(1)
    

    注:移位后第一行的所有值为NaN,后续对比会自动忽略该无效行。

  2. 精准生成0→1的触发掩码
    仅当「当前行状态为1」且「上一行状态为0」时,才判定为有效触发。通过矢量化布尔运算生成同维度的触发掩码:

    trigger_mask = (df == 1) & (prev_df == 0)
    

    掩码中True对应的单元格,代表该列按钮在当前行完成了0→1的触发。

  3. 提取触发行

    • 获取所有至少有一个按钮触发的行:
      trigger_rows = df[trigger_mask.any(axis=1)]
      
    • 查看单个按钮的具体触发位置(以btn_col列为例):
      btn_trigger_indices = trigger_mask['btn_col'].loc[lambda x: x].index
      
  4. 性能优化建议
    由于状态仅4种(0-3),可将所有列转成uint8类型,大幅降低内存占用并提升运算速度:

    df = df.astype('uint8')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 17:04:52