这里是一个例子:

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的那些组。

07-27 16:42