python Pandas : exclude rows below a certain frequency count

标签 python pandas filter dataframe

所以我有一个看起来像这样的 pandas DataFrame:

r vals    positions
1.2       1
1.8       2
2.3       1
1.8       1
2.1       3
2.0       3
1.9       1
...       ...

我想按位置过滤掉所有未出现至少 20 次的行。我见过这样的东西

g=df.groupby('positions')
g.filter(lambda x: len(x) > 20)

但这似乎不起作用,我不明白如何从中取回原始数据框。预先感谢您的帮助。

最佳答案

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

In [125]:
df.groupby('positions')['r vals'].filter(lambda x: len(x) >= 3)

Out[125]:
0    1.2
2    2.3
3    1.8
6    1.9
Name: r vals, dtype: float64

您可以分配此过滤器的结果并将其与 isin 一起使用过滤您的原始 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  positions
0     1.2          1
1     1.8          2
2     2.3          1
3     1.8          1
6     1.9          1

你只需要在你的情况下将 3 更改为 20

另一种方法是使用 value_counts创建一个聚合系列,然后我们可以使用它来过滤您的 df:

In [136]:
counts = df['positions'].value_counts()
counts

Out[136]:
1    4
3    2
2    1
dtype: int64

In [137]:
counts[counts > 3]

Out[137]:
1    4
dtype: int64

In [135]:
df[df['positions'].isin(counts[counts > 3].index)]

Out[135]:
   r vals  positions
0     1.2          1
2     2.3          1
3     1.8          1
6     1.9          1

编辑

如果您想过滤数据框上的 groupby 对象而不是系列,那么您可以调用 filter直接在 groupby 对象上:

In [139]:
filtered = df.groupby('positions').filter(lambda x: len(x) >= 3)
filtered

Out[139]:
   r vals  positions
0     1.2          1
2     2.3          1
3     1.8          1
6     1.9          1

关于 python Pandas : exclude rows below a certain frequency count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30485151/

相关文章:

python - 按时间戳列过滤/选择 Pandas 数据帧的行

c# - 难以理解按引用传递

python - Django : When no search-term: "reduce() of empty sequence with no initial value". 中的两个与搜索相关的错误在任何搜索词上:没有结果

python - Django 模板是否缓存在浏览器中?

python - 它在哪里被视为一个整数?

python-3.x - 将列转换为时间戳 - Pandas Dataframe

android - 将过滤后的项目加载到搜索输出

python - 在方法链中用 nan 替换数据帧列负值

python - 如何处理具有 NaN 的 Pandas Series 数据类型?

javascript - 删除 Javascript 中的空子数组