合并列并计数

时间:2020-10-31 14:33:26

标签: python pandas dataframe

这是我的数据框

enter image description here

这是当前结果

enter image description here

问题在于,项目组可能会保存几个不同的ID。我想输出三个最喜欢的项目组(最喜欢的=项目组的数量)。如何合并具有项目ID的项目组并计算它们?合并后,我想将带有学生名的项目组计算在内。 我想计算项目组出现的频率,并且应该将其与项目ID合并,以便只有一个项目ID。

   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)

我想要的

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为是class my_task { coroutine_handle<> handle; public: inline my_task(my_task &&o) : handle(o.handle) { o.handle = nullptr; // IMPORTANT! } ~my_task() { if (handle) handle.destroy(); } my_task(const my_task &) = delete; my_task & operator =(const my_task &) = delete; }; 上的nunique

studentid

输出:

project_df = df.groupby('projectgroup').agg(project_list = ('projectid',set),
                                            unique_projects=('projectid','nunique'),
                                            frequence=('Studentid','nunique'))
相关问题