python - 用熊猫计算点
问题描述
我被困在如何到达我的目的地。我有学生积分。我想对其进行编码,以便在所有科目中,只能从选定的 4 个科目中计算出学生的分数。前 2 门科目为必修科目。在剩下的部分中,您必须在“BIO”和“PHY”之间选择一个,具体取决于哪个得分高。在剩下的三个科目中,您只能选择 1 个,“GEO”、“CRE”或“HIS”取决于哪个科目得分高。
这是我编码的,没有给我我的结果。
sums = df['ENG']+df['KIS']+df['BIO']+df['PHY']+df['HIS']+df['GEO']+df['CRE']
if 'BIO' >='PHY':
sum = (sums) - (df['PHY'])
else:
sum = (sums) - (df['BIO'])
if 'GEO'>='CRE':
sum = (sums) - (df['CRE'])
else:
sum = (sums) - (df['GEO'])
if 'CRE'>='HIS':
sum = (sums) - (df['CRE'])
else:
sum = (sums) - (df['HIS'])
df['POINTS'] = sum
print(df)
样本数据在这里。
df = pd.DataFrame({'ENG':[10,3,5,6,3],'KIS':[9,5,7,9,10],'BIO':[11,3,4,6,4],'PHY':[5,3,9,10,2],'HIS':[7,12,9,7,8],'GEO':[2,7,6,11,7],'CRE':[8,3,6,8,10]})
根据这些数据,预期结果将是
ENG KIS BIO PHY HIS GEO CRE POINTS
10 9 11 5 7 2 8 38
3 5 3 3 12 7 3 23
5 7 4 9 9 6 6 30
6 9 6 10 7 11 8 36
3 10 4 2 8 7 10 27
解决方案
- 使用
.max(axis=1)
操作和+
结果。
df['POINTS'] = df['ENG'] + df['KIS'] + df[['BIO', 'PHY']].max(axis=1) + df[['HIS', 'GEO', 'CRE']].max(axis=1)
ENG KIS BIO PHY HIS GEO CRE POINTS
10 9 11 5 7 2 8 38
3 5 3 3 12 7 3 23
5 7 4 9 9 6 6 30
6 9 6 10 7 11 8 36
3 10 4 2 8 7 10 27
推荐阅读
- cuda - CUDA线程和块组织方向
- javascript - Object.freeze 和对象内的数组表示法
- jwt - 如何使用 JWT 保持非活动用户登录?
- pointers - 使用指针时出现分段错误
- ios - IPHONEOS_DEPLOYMENT_TARGET 设置为 8.0 Xcode 12 (Flutter)
- sql - TSQL 替换规则:a|2$5.0| 为|5.0|5.0|
- c# - 删除特定条目(在列表中定义
) 来自字典 给出严重错误 --> - c++ - 处理不同类中的整数时如何修复“读取访问冲突”异常
- java - 如何使用过滤器将 Iterable 更改为 ArrayList
- git - Github 签出到远程分支