删除观察数超过N的所有组

2024-05-14 11:29:57 发布

您现在位置:Python中文网/ 问答频道 /正文

如果一个值在一列中出现两次以上,我想删除它出现的每一行

输入df如下所示:

Name   Num
  X     1
  X     2
  Y     3
  Y     4
  X     5

输出df如下所示:

Name   Num
  Y     3
  Y     4

我知道删除重复项是可能的,但是只有当我想删除找到的第一个或最后一个重复项,而不是第n个重复项时,这种方法才有效

df = df.drop_duplicates(subset = ['Name'], drop='third')

这个代码是完全错误的,但它有助于解释我试图做什么


Tags: 方法代码namedf错误numdropduplicates
2条回答

使用^{}作为计数器并过滤所有值,不像2

df1 = df[df.groupby('Name').cumcount() < 3]
print (df1)
  Name  Num
0    X    1
1    X    2
2    Y    3
3    Y    4

细节

print (df.groupby('Name').cumcount())
0    0
1    1
2    0
3    1
4    2
dtype: int64

编辑

^{}^{}筛选:

df1 = df[df.groupby('Name')['Num'].transform('size') < 3]
print (df1)
  Name  Num
2    Y    3
3    Y    4

使用head

df.groupby('Name').head(2)
Out[375]: 
  Name  Num
0    X    1
1    X    2
2    Y    3
3    Y    4

s=df.groupby('Name').size()<=2
df.loc[df.Name.isin(s[s].index)]
Out[380]: 
  Name  Num
2    Y    3
3    Y    4

相关问题 更多 >

    热门问题