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

如何拆分数据集Subject Error字段分号以统计各科目不及格次数?

拆分多科目统计并重新累加计数的实现方法

实现逻辑

先把每一行的计数和对应科目列表拆分开,再将每个科目单独提取出来,把对应计数累加到该科目的总计数里,最后按计数从高到低输出结果。

Python 代码实现

# 原始统计数据
raw_lines = [
    "Count of 23: English",
    "Count of 10: Math; Science ",
    "Count of 2: English; Math; Social Studies "
]

# 用字典存储每个科目的总计数
subject_total = {}

for line in raw_lines:
    # 拆分计数部分和科目部分
    count_text, subjects_str = line.split(": ")
    # 提取数字计数
    current_count = int(count_text.replace("Count of ", ""))
    # 拆分科目,清理空格和空项
    subjects = [s.strip() for s in subjects_str.split(";") if s.strip()]
    
    # 给每个科目累加计数
    for sub in subjects:
        if sub in subject_total:
            subject_total[sub] += current_count
        else:
            subject_total[sub] = current_count

# 按计数从高到低排序输出
for sub, cnt in sorted(subject_total.items(), key=lambda x: -x[1]):
    print(f"Count of {cnt}: {sub}")

代码说明

  1. 拆分每行数据:通过: 分割出计数文本和科目字符串,再从计数文本里提取出数字值。
  2. 处理多科目:用;拆分多个科目,同时清理科目名称前后的空格,避免出现空字符串。
  3. 累加计数:遍历每个科目,在字典里更新该科目的总计数,不存在的科目就初始化为当前计数。
  4. 排序输出:按总计数降序排列后,格式化输出最终结果。

运行代码后得到的结果:

Count of 24: English
Count of 11: Math
Count of 10: Science
Count of 2: Social Studies

(注:你提供的目标结果中Social Studies计数为1,按原始数据计算实际应为2,这里是符合原始数据逻辑的正确结果)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 12:07:17