在您的有限数据集上,以下工作:
In [125]:df.groupby('positions')['r vals'].filter(lambda x: len(x) >= 3)Out[125]:0 1.22 2.33 1.86 1.9Name: r vals, dtype: float64
您可以分配此过滤器的结果,并将其
isin用于过滤orig df:
In [129]:filtered = df.groupby('positions')['r vals'].filter(lambda x: len(x) >= 3)df[df['r vals'].isin(filtered)]Out[129]: r vals positions0 1.2 11 1.8 22 2.3 13 1.8 16 1.9 1
您只需要更改
3为
20您的情况
另一种方法是用于
value_counts创建聚合系列,然后我们可以使用它来过滤您的df:
In [136]:counts = df['positions'].value_counts()countsOut[136]:1 43 22 1dtype: int64In [137]:counts[counts > 3]Out[137]:1 4dtype: int64In [135]:df[df['positions'].isin(counts[counts > 3].index)]Out[135]: r vals positions0 1.2 12 2.3 13 1.8 16 1.9 1
编辑
如果要在数据帧而不是在系列上过滤groupby对象,则可以
filter直接调用groupby对象:
In [139]:filtered = df.groupby('positions').filter(lambda x: len(x) >= 3)filteredOut[139]: r vals positions0 1.2 12 2.3 13 1.8 16 1.9 1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)