您好,我想删除出现次数小于某个数字的条目的行,例如:
df = pd.DataFrame({'a': [1,2,3,2], 'b':[4,5,6,7], 'c':[0,1,3,2]})
df
a b c
0 1 4 0
1 2 5 1
2 3 6 3
3 2 7 2
如果'a'列中的出现次数少于两次,我想删除所有行。
想要的输出:
a b c
1 2 5 1
3 2 7 2
我所知道的:
我们可以通过 condition = df['a'].value_counts() < 2
找到出现的次数,它会给我这样的东西:
2 False
3 True
1 True
Name: a, dtype: int64
但我不知道应该如何从这里开始删除行。
提前致谢!
最佳答案
groupby
+ size
res = df[df.groupby('a')['b'].transform('size') >= 2]
transform
方法将 df.groupby('a')['b'].size()
映射到与 df['a']
对齐的 df
.
value_counts
+ map
s = df['a'].value_counts()
res = df[df['a'].map(s) >= 2]
print(res)
a b c
1 2 5 1
3 2 7 2
关于python - 按出现次数分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53471422/