python - 计算多条件计算python
问题描述
需要根据不同地点的学科讲座演示来检查学生的表现。
在某些情况下,学生从远程位置进行演示。
数学分数就像
学生和教师位置相同 =(subject_lac 的总和 * 0.25)/subject_lac 的总和
学生和教师所在的州不同 =(subject_lac 的总和 * 0.5)/subject_lac 的总和
学生和教师所在的国家/地区不同=(subject_lac 总数 * 1)/subject_lac 总数
但是在某些情况下,同一个学生不同的位置然后乘以权重并对其进行平均,例如:
2个科目在同一地点,3个科目在不同的州,1个科目在不同的国家。
[(同一地点的subject_lac总和* 0.25)+(不同州的subject_lac总和* 0.5)+(不同国家/地区的subject_lac总和* 1)] /(该学生的总科目。)
= [(2 0.25) + (3 0.5) + (1*1)] / 6
数据集如:
Teacher Teach_Location Student Student_Location Subject_lac
(Country+State) (Country+State)
----------------------------------------------------------------------
T1 AAS S1 AAS X110
T1 AAS S1 AAS X110
T1 AAS S2 AAS X212
T2 LMN S3 LMN X311
T1 AAS S2 AAS X212
T1 AAS S1 OPT X150
T2 LMN S3 LMN X311
T1 AAS S4 AAS X222
T2 LMN S4 LMN X222
T2 LMN S4 LMN X222
T1 AAS S1 OPT X150
T1 AAS S2 AAS X200
T1 AAS S2 OPT X211
T2 LMN S3 OPT X311
T2 LMN S3 OPT X311
data = {'Teacher':['T1', 'T1', 'T1', 'T2', 'T1', 'T1', 'T2', 'T1', 'T2', 'T2', 'T1', 'T1', 'T1', 'T2', 'T2'],
'Tech_location':['AAS','AAS','AAS','LMN','AAS','AAS','LMN','AAS','LMN','LMN','AAS','AAS','AAS','LMN','LMN' ],
'Student':['S1','S1','S2','S3','S2','S1','S3','S2','S4','S4','S1','S2','S2','S3','S3'],
'Student_location':['AAS','AAS','AAS','LMN','AAS','OPT','LMN','AAS','LMN','LMN','OPT','AAS','OPT','OPT','OPT' ],
'Subject':['X110','X110','X212','X311','X212','X150','X311','X222','X222','X222','X150',
'X200','X211','X311','X311'] }
df = pd.DataFrame(data)
无法计算教师位置相同的多个学生位置的过程。
对于教师和学生的单一位置:
# I Used state and country columns of Student and Trainer for calculating unique count of subjects.
df4 = df1.groupby(['Teacher','Student','Student_Location','Teacher_Location'])['Subject_lac'].nunique().reset_index(name='total_subject')
def location(x):
if x['teacher_country'] != x['Student country']:
return (1 * int(x['total_subject']))/int(x['total_subject'])
elif x['teacher_country'] == x['Student country'] and x['teacher_state'] != x['Student state']:
return (0.75 * int(x['total_subject']))/int(x['total_subject'])
elif x['teacher_country'] == x['Student country'] and x['teacher_state'] == x['Student state']:
return (0.25 * int(x['total_subject']))/int(x['total_subject'])
return ''
df4 ['Student Performance'] = df4 .apply(location, axis=1)
帮我计算多个位置的性能。
解决方案
推荐阅读
- c# - Serialize C# objects to a JSON to a server
- ios - Can I distribute an iOS app over-the-air from an individual account?
- lotus-notes - 从莲花脚本中的收件箱移动后如何删除文档?
- javascript - 使用 JS 确定范围滑块背景宽度
- reactjs - React/TypeScript .map over array not rendering dropdown option
- android - Activity won't start and initilazing Array Adapter syntax doesn't work
- c - Char doesn't show in .dat file in C
- reactjs - Best way to handle loading, success and error in redux
- docker - How to add console app in docker compose?
- qt - Qt/QML MainWindow and StackView page communication using signal or global variables