本站消息

站长简介


前每日优鲜python全栈开发工程师,自媒体达人,逗比程序猿,钱少话少特宅,我的公众号:想吃麻辣香锅

  python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长



+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Python创建新的DF对于2个DF的学生成绩,一个包含StudentID和Marks,另一个包含Marks Series和Grade

发布于2021-05-07 06:48     阅读(396)     评论(0)     点赞(7)     收藏(2)


0

1

2

3

4

5

6

7

8

9



请在下面提供帮助Python需要更新DF以获取每个学科的分数,从Student和Grade DF的其中一个包含StudentID和Marks,另一个包含Marks Series和Grade映射。

df_student
StudentID Maths Science
1001    80    60       
2001    90    80

df_grade
Grade Subjects  Marks_range
0     A Maths  [81,90]
1     A Science  [81,90]
2     B Maths  [60,80]
3     B Science  [60,80]    

StudentID  Maths MathsGrade  Science ScienceGrade
1001    80   B   60   B     
2001    90   A   80   A

请参考此处无法正确格式化说明中的代码-图片 请参考此处无法正确格式化的代码


解决方案


处理流程:

  1. 将评分类别分为两列
  2. 拆分后,加入原始DF
  3. 在成绩的DF上运行查找功能,并将其添加到新列中
  4. 将列名称优化为新的DF,并将其转换为宽格式。
df_grade['Marks_range'] = df_grade['Marks_range'].apply(lambda x: x[1:6])
df2 = pd.concat([df_grade[['Grade', 'Subjects']],df_grade['Marks_range'].str.split(',', expand=True)], axis=1)
df2 = df2.rename(columns={0:'Mark_min',1:'Mark_max'})
df2[['Mark_min','Mark_max']] = df2[['Mark_min','Mark_max']].astype(int)

def lookup_grade(x):
    subj = x['Subjects']
    score = x['value']
    match = (df2['Mark_min'] <= score) & (df2['Mark_max'] >= score)
    grade = df2[df2['Subjects'] == subj]['Grade'][match]
    return grade.values[0]

df_student['Grade'] = df_student[['Subjects','value']].apply(lambda x: lookup_grade(x), axis=1)
df = df_student.set_index(['StudentID','Subjects']).unstack()
df.columns = df.columns.droplevel()
df = df.rename_axis(columns=None).reset_index()
df.columns = ['StudentID', 'Maths', 'Science', 'MathsGrade', 'ScienceGrade']

df
    StudentID   Maths   Science MathsGrade  ScienceGrade
0   1001    80  60  B   B
1   2001    90  80  A   A

这个答案对我来说是宝贵的经验。谢谢你。




0

1

2

3

4

5

6

7

8



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/964745/a578604a2b0e98528c6c/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

7 0
收藏该文
已收藏

评论内容:(最多支持255个字符)