在应用" group by"之后选择第一组或最后一组。

时间:2015-06-24 11:55:21

标签: python python-2.7 numpy pandas

我希望在逐列应用后提取特定数量的组。例如前2或3组。

我有一个数据框:

id gender value
1  f      1123 
1  f      10
2  m      123
2  m      154  
2  m      165
3  m      654  
3  m      987
4  f      7654
4  f      7654
4  f      7654
...  ...  ....

我想要这样的东西

id gender value
2  m      123
2  m      154 
3  m      654  
3  m      987
... .. ...  

我的代码是:

dtFrame2 = dtFrame.groupby('id').head(2)
dtFrameMale = dtFrame2.loc[dtFrame2.gender=='male']
temp = maleGroups.filter(lambda x: len(x) == 2)

最后一个语句给了我所有有两行的组,但之后我想提取前两个,三个或n个组。

1 个答案:

答案 0 :(得分:1)

像这样的东西

In [60]: s = df[df['gender'] == 'm'].groupby('id').size()

In [61]: s.name = 'size'

In [62]: df2 = df.join(s, on='id')

In [63]: df2[df2['size'] == 2]
Out[63]: 
   id gender  value  size
5   3      m    654     2
6   3      m    987     2