基于条件对Python pandas数据框进行分组

25

我有一个简单的问题,我有一个数据框,通过 groupby 函数基于某列对结果进行分组,并获取大小,代码如下:

df.groupby('column').size()

现在的问题是,我只想得到大小大于X的那些。我想知道是否可以使用lambda函数或类似的东西来做到这一点?我已经尝试过以下方法:

df.groupby('column').size() > X

并且它会打印出一些真和假的值。

3个回答

30

尝试这段代码:

df.groupby('column').filter(lambda group: group.size > X)

29

分组结果是一个普通的DataFrame,所以可以像平常一样过滤结果:

 import pandas as pd

 df = pd.DataFrame({'a': ['a', 'b', 'a', 'a', 'b', 'c', 'd']})
 after = df.groupby('a').size()
 >> after
 a
 a    3
 b    2
 c    1
 d    1
 dtype: int64

 >> after[after > 2]
 a
 a    3
 dtype: int64

0

在Pandas > 2.0中

根据这里的说明,您可以使用函数count()来实现此目的。

请参见下文:

df.groupby("group_col")\
  .filter(lambda x: x['another_col'].count() > X)\
  .groupby("group_col").size()

您还可以使用 groupby 来筛选出计数大于 X 的行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接