You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas计算学生前10个有效考试题目累加分数的问题

筛选DataFrame每行前10个非0分数求和方案

针对你需要计算每行前10个非0(即4.0或-1.0)分数总和的需求,这里提供两种实现方式:

方法一:用Pandas的apply函数(简洁直观)

假设你的成绩DataFrame名为df,直接通过apply对每行执行筛选、取前10项、求和的操作:

df['score'] = df.apply(lambda row: row[row != 0].head(10).sum(), axis=1)

代码逻辑拆解:

  • row[row != 0]:筛选当前行中所有非0的有效分数
  • .head(10):提取筛选后的前10个有效分数
  • .sum():对这10个分数求和
  • axis=1:指定对每行执行上述操作

方法二:用Numpy实现(大数据量下更高效)

如果你的数据集很大,apply效率较低,可以用Numpy数组处理:

import numpy as np

# 将DataFrame转换为Numpy数组
score_array = df.values

# 遍历每行计算分数
score_list = []
for row in score_array:
    # 筛选非0元素,取前10个求和
    valid_scores = row[row != 0]
    score_list.append(valid_scores[:10].sum())

# 将结果添加为新列
df['score'] = score_list

验证示例

以你给出的学生数据为例:[4,4,-1,0,0,-1,-1,4,-1,4,0,0,-1,-1,4],非0有效项为[4,4,-1,-1,-1,4,-1,4,-1,-1,4],取前10项求和结果为10,两种方法都能得到正确结果。

内容的提问来源于stack exchange,提问作者nichas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 16:55:13