我很难计算“ total_sum”。 如果有人没有申请该主题,我表示不适用。 计算total_sum时,total_sum指的是“标准”字段,并且不包含N / A。 我不擅长Python,所以我不知道如何计算“ total_sum”
ENG MATH ART COM subject_sum total_sum
Standard 10 10 5 5
A 10 N/A N/A 1 11 15
B N/A 5 3 5 13 20
C 3 3 2 2 10 30
答案 0 :(得分:3)
假设此数据框与您的数据框相同(带有字符串索引)
dataframe = {'index' :['Standard', 'A', 'B', 'C'],
'ENG' : [10, 10, np.nan, 3],
'MATH' : [10, np.nan, 5, 3],
'ART' : [5, np.nan, 3, 2],
'COM' : [5, 1, 5, 2]}
df = pd.DataFrame(dataframe).set_index('index').rename_axis(None)
df['subject_sum'] = df.sum(axis=1)
df
ENG MATH ART COM subject_sum
Standard 10.0 10.0 5.0 5 30.0
A 10.0 NaN NaN 1 11.0
B NaN 5.0 3.0 5 13.0
C 3.0 3.0 2.0 2 10.0
然后您可以将每个.dot()
主题值中的.notna()
应用于Standard
的值
standard = df.loc['Standard', ['ENG', 'MATH', 'ART', 'COM']]
df['total_sum'] = df[['ENG', 'MATH', 'ART', 'COM']].notna().dot(standard)
df
结果:
ENG MATH ART COM subject_sum total_sum
Standard 10.0 10.0 5.0 5 30.0 30.0
A 10.0 NaN NaN 1 11.0 15.0
B NaN 5.0 3.0 5 13.0 20.0
C 3.0 3.0 2.0 2 10.0 30.0