首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >至少返回前n行DataFrame

至少返回前n行DataFrame
EN

Stack Overflow用户
提问于 2021-03-12 06:18:05
回答 1查看 28关注 0票数 3

我使用的是panda和python,我有类似于下面的DF:

代码语言:javascript
复制
id    student   courses
0     A         1
1     F         2
2     B         5
3     C         2
4     D         4
5     H         5

我希望至少选择课程最多的前3名学生。然后得到这样的东西:

代码语言:javascript
复制
id  student courses
2   B       5
5   H       5
4   D       4
1   F       2
3   C       2

返回的DF有5行,因为我需要将所有参加课程的学生显示为与前3名中的最后一个学生相等。

我的代码:

代码语言:javascript
复制
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)

由于某些原因,我不能让它追加行。有什么帮助吗。

EN

回答 1

Stack Overflow用户

发布于 2021-03-12 06:24:21

尝试使用np.unique提取最大课程数,然后使用isin

代码语言:javascript
复制
max_courses = np.unique(df.courses)[-3:]

df[df.courses.isin(max_courses)]

输出:

代码语言:javascript
复制
   id student  courses
1   1       F        2
2   2       B        5
3   3       C        2
4   4       D        4
5   5       H        5
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66591377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档