мой фрейм данных выглядит так, как показано ниже, и я намерен pandas.groupby
на имя ученика и выяснить, что они делали между "английским" и "хинди"
data ={'StudentId':['AAdams','AAdams','AAdams','AAdams','AAdams','AAdams',
'BBrooks','BBrooks','BBrooks','BBrooks','BBrooks',],
'activity':['came school','english','lunch','hindi','sports','left school','came school','english','read','hindi','left school'],
'month':[11,11,11,11,12,12,12,12,12,1,1]}
pd.DataFrame(data)
StudentId activity month
0 AAdams came school 11
1 AAdams english 11
2 AAdams lunch 11
3 AAdams hindi 11
4 AAdams sports 12
5 AAdams left school 12
6 BBrooks came school 12
7 BBrooks english 12
8 BBrooks read 12
9 BBrooks hindi 1
10 BBrooks left school 1
что у меня естьпопробовал до сих пор, или я знаю, что
df[df.b.eq('english').groupby(df.StudentId).cumsum()].reset_index(drop=True)
or
df.groupby('StudentId').apply(lambda x: x.loc[(x.b == 'english').idxmax():,:])
.reset_index(drop=True)
, затем срежьте мой фрейм данных, и тогда я могу сделать это с помощью приведенного ниже кода
df.groupby('StudentId').head(5)
окончательный фрейм данных или вывод должен выглядеть только действия междуактивность = английский и активность = хинди
StudentId activity month
1 AAdams english 11
2 AAdams lunch 11
3 AAdams hindi 11
7 BBrooks english 12
8 BBrooks read 12
9 BBrooks hindi 1