Dataframe mergen und dann zählen
Verfasst: Samstag 31. Oktober 2020, 17:16
Hallo zusammen,
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.
Was ich gerne hätte

Kann mir bitte jemand dabei weiterhelfen? Danke im Voraus.
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.