Pandas groupby on multiple values

时间:2017-06-12 20:13:22

标签: python pandas

从排序表开始:

Index | A | B | C       |  
0     | A1| 0 | Group 1 |  
1     | A1| 0 | Group 1 |  
2     | A1| 1 | Group 2 |  
3     | A1| 1 | Group 2 |  
4     | A1| 2 | Group 3 |  
5     | A1| 2 | Group 3 |  
6     | A2| 7 | Group 4 |  
7     | A2| 7 | Group 4 |   

返回记录0,1,2,3,6,7

首先,我想基于A列和B列创建组。 然后我只想要返回一个A组的前两个子组。 我想要为子组返回所有记录。

非常感谢你。

1 个答案:

答案 0 :(得分:2)

pd.factorize内使用groupby,过滤少于2

df[df.groupby('A').B.transform(lambda x: x.factorize()[0]).lt(2)]
# same as
# df[df.groupby('A').B.transform(lambda x: x.factorize()[0]) < 2]

    A  B        C
0  A1  0  Group 1
1  A1  0  Group 1
2  A1  1  Group 2
3  A1  1  Group 2
6  A2  7  Group 4
7  A2  7  Group 4