python - Pandas groupby 索引 : discard entire group if condition is not met

标签 python pandas pandas-groupby

我有一个 pandas 数据框,如下所示:

df = pd.DataFrame({'alpha':['a','a','b','b'],'beta':[1,2,3,4]})

enter image description here

这个想法是仅返回列 beta 上满足特定条件的组,否则丢弃整个组

我想要的结果是:

enter image description here

但是,例如。

df.groupby('alpha').apply(lambda x: x.beta>1) 

不起作用。

最佳答案

尝试不使用groupbyisin

df.loc[~df.alpha.isin(df.loc[df.beta<=1,'alpha'])]
Out[316]: 
  alpha  beta
2     b     3
3     b     4

如果确实想要 groupby ,您可以使用 transform ,因为这比传递 lambda 更有效

df[df.beta.gt(1).groupby(df.alpha).transform('all')]
Out[317]: 
  alpha  beta
2     b     3
3     b     4

时间

%timeit df.groupby('alpha').filter(lambda x: (x.beta >1).all())
100 loops, best of 3: 2.53 ms per loop
%timeit df.loc[~df.alpha.isin(df.loc[df.beta<=1,'alpha'])]
1000 loops, best of 3: 874 µs per loop
%timeit df[df.beta.gt(1).groupby(df.alpha).transform('all')]
100 loops, best of 3: 2.04 ms per loop

关于python - Pandas groupby 索引 : discard entire group if condition is not met,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55152600/

相关文章:

python - Scrapy - 抓取的网站身份验证 token 在抓取时过期

python - Pydoop 在大数据分析和数据科学中的重要性

python - 在数据框中创建新列时将缺失值留空

python - 获取正值之和与负值之和

python - 如何使用按值分组创建新的 pandas DataFrame?

pandas - 如何增加每列/组的索引

python - 新用户无法登录Django

python - 使同一 Python 模块内的子模块彼此可见

python - 使用 python 从列中获取数据,而不使用 pyexcel 或其他库

python - 如何获取 1 列值并将其中一些值放入基于 bool 标志列的新列中?