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

如何按连续重复值及条件筛选Pandas DataFrame?

解决方法

可以通过标记连续重复组、计算组长度,再结合数值筛选来实现,代码如下:

import pandas as pd

df = pd.DataFrame({'a':[1, 1, 1, 2, 1, 3, 1, 1, 4, 4, 5, 5, 5, 6, 6, 3]})

# 标记连续重复组的起始点,生成组ID
group_ids = df['a'].ne(df['a'].shift()).cumsum()
# 计算每个组的长度,映射到每一行
group_sizes = group_ids.map(group_ids.value_counts())
# 筛选条件:组长度≥2 且 数值≤5
result = df[(group_sizes >= 2) & (df['a'] <= 5)]

print(result)

代码解释

  • df['a'].ne(df['a'].shift()):比较当前行与上一行的a值是否不同,返回布尔序列,True表示新组的开始。
  • cumsum():将布尔序列累加,生成唯一的组ID,同一连续重复组的行拥有相同ID。
  • group_ids.value_counts():统计每个组的行数(即连续重复的次数),再用map将组长度对应到每一行。
  • 最后通过布尔索引筛选出组长度≥2(连续重复)且数值≤5的行,得到预期结果。

运行后输出:

a
0   1
1   1
2   1
6   1
7   1
8   4
9   4
10  5
11  5
12  5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:22:05