|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Demon猫 于 2020-2-28 13:14 编辑
想问一下:代码大概是这样的(已经修改了):
想法是如果科目难度有变化,例如数学很难,最高分也才60分,那么算总成绩的时候,数学的权重就被低估了,所以为了记录同学的各科成绩综合分,想用排名来打分,用排名分来综合看看,这样可以去除科目难度的权重不一致
想着写写就出各种问题了
- import pandas as pd
- #导入同学分科成绩数据
- Classmate = pd.DataFrame([['张三',120,60],
- ['李四',150,80],
- ['王五',135,59],
- ['小四',122,55],
- ['陈六',143,65],
- ['李七',96,62],
- ['张八',102,54]],columns = ["name","math","english"])
- #科目名字
- Name = ["math","english"]
- for name in Name:
- #先按照每科成绩排序
- score = Classmate.sort_walues(by=name,ascending=False)[name]
- #先定义个DataFrames对象
- score = pd.DataFrame(score) #试过取消这步也是不行的
- score[name+ 'score'] = 0
- #分组的数量
- scoregroipnum = len(score)//4
-
- #不同分组分数的判断
- for i in range(4):
- if i == 3:
- Classmate[name+ 'score'][(i+1)*scoregroipnum:] = i + 1
- Classmate[name+ 'score'][i*scoregroipnum: (i+1)*scoregroipnum] = i + 1
- #将排名分数合并到原Classmate
- Classmate = pd.concat([Classmate,score[name+"score"]],axis=1)
复制代码
为什么会出现
这里
Classmate[name+ 'score'][i*scoregroipnum: (i+1)*scoregroipnum] = i + 1
有'int' object does not support item assignment
这样的错误提醒
求解决方法 |
|