我使用的是panda和python,我有类似于下面的DF:
id student courses
0 A 1
1 F 2
2 B 5
3 C 2
4 D 4
5 H 5我希望至少选择课程最多的前3名学生。然后得到这样的东西:
id student courses
2 B 5
5 H 5
4 D 4
1 F 2
3 C 2返回的DF有5行,因为我需要将所有参加课程的学生显示为与前3名中的最后一个学生相等。
我的代码:
sorted_list = students_DF.sort_values(by=["courses"], ascending=False)
n=3 #top-3
return_df = sorted_list[:n]
for i, row in sorted_list.iterrows():
if return_df.iloc[n-1]['mag'] == sorted_list.iloc[n]['mag']:
return_df.append(sorted_list.iloc[n], ignore_index=True)由于某些原因,我不能让它追加行。有什么帮助吗。
发布于 2021-03-12 06:24:21
尝试使用np.unique提取最大课程数,然后使用isin
max_courses = np.unique(df.courses)[-3:]
df[df.courses.isin(max_courses)]输出:
id student courses
1 1 F 2
2 2 B 5
3 3 C 2
4 4 D 4
5 5 H 5https://stackoverflow.com/questions/66591377
复制相似问题