Python Pandas:排除低于特定频率计数的行

Python Pandas:排除低于特定频率计数的行,第1张

Python Pandas:排除低于特定频率计数的行

在您的有限数据集上,以下工作:

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5645872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存