Das ist meine Dataframe

Was ich zur Zeit habe

Das Problem ist, dass die Projektgruppen möglicherweise mehrere unterschiedliche IDs speichern. Ich möchte die drei beliebtesten Projektgruppen ausgeben (am beliebtesten = Anzahl der Projektgruppen). Wie kann ich die Projektgruppen mit der Projekt-ID zusammenführen und zählen? Ich möchte die Projektgruppe beim Zusammenführen mit dem Schülernamen zählen. Ich möchte zählen, wie oft die Projektgruppe angezeigt wird, und sie sollte mit der Projekt-ID zusammengeführt werden, damit nur eine Projekt-ID vorhanden ist.
Code: Alles auswählen
d = {
'Studentid': [1, 2, 3 , 1, 1, 1, 1, 4]
,'Studentname': ['Bob', 'Jason', 'Jackson', 'Bob', 'Bob', 'Bob', 'Bob', 'Max']
, 'projectgroup': ['The fantastic', 'New', 'Banana' , 'The fantastic', 'Banana', 'Banana', 'Banana', 'New']
,'projectid': [1, 2, 3, 4, 5, 3, 3, 2]
}
df = pd.DataFrame(data=d)
display(df)
project_df = df.groupby('projectgroup').agg(project_list = ('projectid',set),
unique_projects=('projectid','nunique'))
pd.merge(project_df[['Studentid','Studentname','projectgroup']].drop_duplicates(),project_df,how='left',on='projectgroup')
df_sorted = project_df.groupby(['projectid', 'projectgroup']).size().nlargest(3) .reset_index(name='freq_of_projects')
display(df_sorted)

Kann mir bitte jemand dabei weiterhelfen? Danke im Voraus.