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

如何修正DataFrame中连续≥4个零值块内行的标记逻辑?

问题分析与解决方案

原代码的问题在于它仅标记了连续零块中的首尾相关行:要么当前行和前3行都是零,要么当前行和后3行都是零。但对于连续零块中间的行(比如4个连续零里的第2、第3行),这两个条件都不满足,所以会被漏标。

比如你提到的2022-10-17 23:13:00和23:14:00,它们属于23:12-23:15的4个连续零块,原代码只标记了第一个(23:12)和最后一个(23:15),中间两行没被标记。

修正方案

我们可以通过分组标记连续零块的方式,把所有属于长度≥4的零块的行都标记为True:

# 1. 创建分组键:连续的零会被分到同一个组
group_key = (df['volume'] != 0).cumsum()
# 2. 计算每个组的行数
group_size = df.groupby(group_key)['volume'].transform('size')
# 3. 标记条件:当前行是零,且所在组的行数≥4
df['cannot_trade'] = (df['volume'] == 0) & (group_size >= 4)

验证结果

运行上述代码后,2022-10-17 23:12:00到23:15:00的4行都会被标记为True,所有长度≥4的连续零块内的行也都会正确标记。

另外,对于更长的零块(比如23:17-23:27的11个连续零),所有行都会被正确标记为True,不会再有漏标情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:55:36