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

使用Python Pandas删除DataFrame中指定列值累计出现超3次的行

实现方案

核心逻辑是用groupby+cumcount()对每个Name的出现顺序做累计计数,只保留计数小于3的行即可(cumcount从0开始计数,0/1/2对应前3次出现)。

完整代码示例

import pandas as pd

# 构造示例DataFrame
data = {
    'Name': ['Bob', 'Frank', 'Bob', 'Bob', 'Bob', 'Frank', 'Bob'],
    'Age': [20, 50, 21, 22, 5, 10, 60]
}
df = pd.DataFrame(data)

# 核心过滤逻辑
df_filtered = df[df.groupby('Name').cumcount() < 3]

print(df_filtered)

输出结果

Name  Age
0    Bob   20
1  Frank   50
2    Bob   21
3    Bob   22
5  Frank   10

输出和需求完全匹配:Bob前3次出现的行都保留,后续第4、第5次出现的行(原索引4、6)被删除,Frank仅出现2次全部保留。

逻辑说明

  • df.groupby('Name').cumcount()会对每个分组内的行按原始顺序从0开始递增计数,同一个Name的第1行计数0,第2行1,第3行2,第4行3,以此类推
  • 筛选条件<3刚好保留每个Name的前3次出现的所有行,后续超过3次的行自动过滤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 15:00:02