首页 > 解决方案 > 仅当重复数小于 X 时才删除重复项

问题描述

只有当重复的数量小于 x(例如 3)时,我才需要在我的 DataFrame 中删除重复的行(如果超过 3 个重复,请保留它们!)

样本:

在哪里count重复的数量和重复在 coldata

data | count
-------------
a    | 1
b    | 2
b    | 2
c    | 1
d    | 3
d    | 3
d    | 3

期望的结果:

data | count
-------------
a    | 1
b    | 1
c    | 1
d    | 3
d    | 3
d    | 3

我怎样才能做到这一点?提前致谢。

标签: python-3.xpandas

解决方案


我相信您需要链条件Series.duplicated并获得大于或等于Nin 的值boolean indexing,最后1count列设置:

N = 3
df1 = df[~df.duplicated('data') | df['count'].ge(N)].copy()
df1.loc[df['count'] < N, 'count'] = 1
print (df1)
  data  count
0    a      1
1    b      1
3    c      1
4    d      3
5    d      3
6    d      3

推荐阅读