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

如何用Pandas提取连续重复3次的索引对应的DataFrame

解决方案

要提取DataFrame中连续重复至少3次的索引对应的连续行,可以通过以下步骤用Pandas实现:

1. 构造示例数据

先还原你给出的示例DataFrame:

import pandas as pd

data = {
    'index': [1, 2, 2, 2, 3, 2, 5, 2],
    'var1': ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'f']
}
df = pd.DataFrame(data).set_index('index')

2. 标记连续索引组并计算组大小

我们需要先识别出连续相同索引的分组,再计算每个分组包含的行数:

# 生成连续组的唯一标识:当前索引和前一行不同时,组号递增
group_ids = (df.index != df.index.shift()).cumsum()
# 计算每个组的行数,并将结果映射到原DataFrame的每一行
group_sizes = df.index.to_series().groupby(group_ids).transform('size')

3. 筛选符合条件的行

筛选出所在组行数≥3的行,就是连续重复至少3次的索引对应的连续数据:

result = df[group_sizes >= 3]
print(result)

运行后输出结果:

var1
index      
2         b
2         c
2         d

逻辑说明

  • group_ids通过对比当前行索引与前一行索引,将连续相同的索引归为同一个组,每个组有唯一编号。
  • group_sizes用transform方法把每个组的大小赋值给组内的每一行,这样我们能直接通过行级的判断筛选目标数据。
  • 最后通过group_sizes >=3筛选出所有属于连续重复3次及以上的索引组的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:15:31