我有一个简单的问题,我有一个数据框,通过 groupby
函数基于某列对结果进行分组,并获取大小,代码如下:
df.groupby('column').size()
现在的问题是,我只想得到大小大于X的那些。我想知道是否可以使用lambda函数或类似的东西来做到这一点?我已经尝试过以下方法:
df.groupby('column').size() > X
并且它会打印出一些真和假的值。
我有一个简单的问题,我有一个数据框,通过 groupby
函数基于某列对结果进行分组,并获取大小,代码如下:
df.groupby('column').size()
现在的问题是,我只想得到大小大于X的那些。我想知道是否可以使用lambda函数或类似的东西来做到这一点?我已经尝试过以下方法:
df.groupby('column').size() > X
并且它会打印出一些真和假的值。
尝试这段代码:
df.groupby('column').filter(lambda group: group.size > X)
分组结果是一个普通的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
根据这里的说明,您可以使用函数count()
来实现此目的。
请参见下文:
df.groupby("group_col")\
.filter(lambda x: x['another_col'].count() > X)\
.groupby("group_col").size()
groupby
来筛选出计数大于 X
的行。