分组并选择每个组的第一,第二和第四位成员?

时间:2019-11-15 22:39:52

标签: python pandas group-by pandas-groupby

相关:pandas dataframe groupby and get nth row

我可以使用groupby方法,并通过以下方式选择前N个组成员:

df.groupby('columnA').head(N) 

但是,如果我要每个小组的第一,第二和第四位成员怎么办?

3 个答案:

答案 0 :(得分:3)

您可以

df.groupby('columnA').apply(lambda x : x.iloc[[has to 0,1,3],:]).reset_index(level=0,drop=True)

答案 1 :(得分:2)

df1 = df.groupby('columnA').head(4) 
df1.drop(df.groupby('columnA').head(4).index.values[2], axis=0)

答案 2 :(得分:1)

GroupBy.nth列出了一个列表,因此您可以这样做

df = pd.DataFrame({'A': list('aaaabbbb'), 'B': list('abcdefgh')})
df.groupby('A').nth([0, 1, 3])

   B
A   
a  a
a  b
a  d
b  e
b  f
b  h

# To get the grouper as a column, use as_index=False
df.groupby('A', as_index=False).nth([0, 1, 3])

   A  B
0  a  a
1  a  b
3  a  d
4  b  e
5  b  f
7  b  h