这里是一个例子:
df = pd.DataFrame({
'file':['f1','f2','f3','f4','f5','f6','f7','f8','f9','f10','f11','f12'],
'root':['root1','root1','root1','root2','root2','root2','root3','root4','root5','root6','root6','root6'],
})
我需要这样的输出:
file root
0 f1 root1
1 f2 root1
2 f3 root1
3 f4 root2
4 f5 root2
5 f6 root2
9 f10 root6
10 f11 root6
11 f12 root6
因为root1 / root2 / root3在列中计数3次
最佳答案
filter
用于此目的的API是groupby
对象的filter
方法。
see also Split-Apply-Combine
df.groupby('root').filter(lambda x: x.size > 2)
file root
0 f1 root1
1 f2 root1
2 f3 root1
3 f4 root2
4 f5 root2
5 f6 root2
9 f10 root6
10 f11 root6
11 f12 root6
将可调用对象传递给
filter
,该对象接受数据框作为参数并返回布尔值。然后,groupby
仅返回可调用对象返回了True
的那些组。