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

如何查找大表中目标特征出现次数最高的前3组连续100行区间

实现思路:滑动窗口法(时间复杂度O(n),数千行规模秒出结果)

这个需求是典型的固定长度滑动窗口统计问题,不需要暴力遍历所有窗口重复计算,单次遍历即可完成所有区间的分值统计:

  • 先定义目标特征集合,例如target_features = {"dessert", "object"}
  • 生成和表格行数等长的分值数组,每一位对应行的得分:如果该行feature属于目标特征集合记1,否则记0(需要给不同特征设置不同权重的话可以自定义分值)
  • 先计算初始窗口(行0到行99)的总得分,之后每次窗口向右滑动1行时,仅需要减去移出窗口的行分值、加上新进入窗口的行分值,即可快速得到当前窗口的总得分
  • 最后把所有窗口的得分倒序排序,取前3即可

代码示例(基于pandas实现)

pandas已经内置了滑动窗口计算函数rolling,不需要手动实现滑动逻辑,代码更简洁:

import pandas as pd

# 1. 读取你的表格数据,假设已经加载为df
# df = pd.read_csv("你的表格路径.csv")

# 2. 定义目标特征集合
target_features = {"dessert", "object"}

# 3. 生成每行的匹配得分
df['score'] = df['feature'].apply(lambda x: 1 if x in target_features else 0)

# 4. 计算长度为100的滑动窗口总得分
df['window_sum'] = df['score'].rolling(window=100).sum()

# 5. 过滤有效窗口,绑定窗口的起止行号
valid_windows = df[df['window_sum'].notna()].reset_index()
valid_windows['start_idx'] = valid_windows['index'] - 99
valid_windows['end_idx'] = valid_windows['index']

# 6. 按得分倒序取前3个窗口
top3_windows = valid_windows.sort_values(by='window_sum', ascending=False).head(3)[['start_idx', 'end_idx', 'window_sum']]

# 输出结果
print(top3_windows)

补充说明

  • 运行前可先判断表格总行数,如果小于100需要自行调整窗口长度,否则不会生成有效计算结果
  • 如果要求窗口内必须覆盖所有指定的目标特征才计入统计,可以在过滤有效窗口的步骤增加对应判断逻辑,筛掉未覆盖全目标特征的窗口即可
  • 数千行的规模下该方案计算耗时在毫秒级,完全不需要额外优化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:09:01