这是我的数据框
这是当前结果
问题在于,项目组可能会保存几个不同的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)
我想要的
答案 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'))