首页 > 解决方案 > 计算多条件计算python

问题描述

需要根据不同地点的学科讲座演示来检查学生的表现。

在某些情况下,学生从远程位置进行演示。

数学分数就像

但是在某些情况下,同一个学生不同的位置然后乘以权重并对其进行平均,例如:

2个科目在同一地点,3个科目在不同的州,1个科目在不同的国家。

数据集如:

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)

帮我计算​​多个位置的性能。

标签: pythonpandasdataframeif-statement

解决方案


推荐阅读