按组大小过滤数据框

时间:2021-02-13 17:12:31

标签: python pandas group-by

我有一个数据框,我想根据组大小进行过滤。例如,我想按“名称”和“日期”分组并获取大小大于 2 的组。

   Name     Date Symbol
0  Ajay  2018_Q1     AA
1  Ajay  2018_Q1     BB
2  Ajay  2018_Q1     CC
3  Ajay  2018_Q1     DD
4  Ajay  2019_Q1     AA
5  Faye  2019_Q1     DD
6  Faye  2019_Q1     AA
7  Faye  2019_Q1     ZZ
8  Faye  2018_Q1     AA
9  Faye  2018_Q1     EE

所以输出数据框应该是这样的:

   Name     Date Symbol
0  Ajay  2018_Q1     AA
1  Ajay  2018_Q1     BB
2  Ajay  2018_Q1     CC
3  Ajay  2018_Q1     DD
5  Faye  2019_Q1     DD
6  Faye  2019_Q1     AA
7  Faye  2019_Q1     ZZ

我如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

您可以使用方法filter

df.groupby(['Name', 'Date']).filter(lambda x: x['Symbol'].size > 2)

df.groupby(['Name', 'Date']).filter(lambda x: x.shape[0] > 2)

输出:

   Name     Date Symbol
0  Ajay  2018_Q1     AA
1  Ajay  2018_Q1     BB
2  Ajay  2018_Q1     CC
3  Ajay  2018_Q1     DD
5  Faye  2019_Q1     DD
6  Faye  2019_Q1     AA
7  Faye  2019_Q1     ZZ