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

如何在Pandas DataFrame中仅保留某列重复次数超4次的行?

解决方案:筛选Pandas DataFrame中指定列重复次数超过4次的行

这问题我之前处理大型数据集的时候也遇到过,给你两种实用的方案,兼顾简洁性和处理效率,完全适配你的需求:

方法一:先统计频次再筛选(直观易懂)

这种方法步骤清晰,适合需要先查看各Shop出现次数的场景:

import pandas as pd

# 构造你的示例DataFrame(实际使用时替换成你的数据集即可)
data = {
    'Shop': ['Nike', 'Nike', 'Nike', 'Nike', 'Nike', 'Adidas', 'Adidas', 'Adidas', 'Apple', 'Apple', 'Apple', 'Apple', 'United', 'United', 'United', 'United', 'United', 'United'],
    'Name': ['Tom', 'Keith', 'Justin', 'Thomas', 'George', 'Tom', 'Thomas', 'Jennifer', 'Louise', 'Matthiew', 'Vincent', 'George', 'Tom', 'Benjamin', 'James', 'Avery', 'Marcus', 'Justin'],
    'Number': [45, 245, 876, 65, 6, 34, 652, 872, 79, 1, 652, 85, 62, 4, 23, 96, 763, 45]
}
df = pd.DataFrame(data)

# 1. 统计每个Shop的出现次数
shop_frequencies = df['Shop'].value_counts()
# 2. 筛选出出现次数超过4次的Shop名称
valid_shops = shop_frequencies[shop_frequencies > 4].index
# 3. 过滤原DataFrame,只保留符合条件的行
filtered_df = df[df['Shop'].isin(valid_shops)]

print(filtered_df)

运行后就能得到你期望的结果:只包含Nike和United的所有行。

方法二:用transform高效筛选(适合大型数据集)

如果你的数据集非常大,推荐用这种方法——它只需要一次遍历DataFrame,性能更优:

# 直接通过groupby+transform完成筛选
filtered_df = df[df.groupby('Shop')['Shop'].transform('size') > 4]

原理说明

groupby('Shop')['Shop'].transform('size')会给每一行返回对应Shop的总出现次数,之后我们直接筛选次数大于4的行即可,整个过程不需要额外存储频次统计结果,内存占用更低,处理速度更快。

两种方法都能完美满足你的需求,你可以根据自己的数据集规模和使用习惯选择~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 13:47:46