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

Python统计CSV文件中周一出现总数的技术求助

统计CSV中周一出现次数的问题解决

我想统计CSV文件中“Monday”(周一)的出现总数,预期结果是1972,但当前代码只会返回所有Monday字符串,没法得到总数。我试过用SearchCursor但没成功,作为Python新手,求帮忙解决。以下是我的代码:

import csv

   with open(r"C:\users\david\OneDrive\Documents\ArcGIS\Projects\MyProject1\Burglaries_TableToExcel.csv", 'r') as monday:   

    reader = csv.reader(monday,delimiter =",")
    title = next(reader)[16]
    found_section = False
    header = None
    DayOfWeek_index = None
    DayOfWeek_sum = 'Monday'
    for row in reader:
        if not found_section:
            if len(row) > 0:
                if row[16] == "DayOfWeek":
                    header = next(reader)
                    DayOfWeek_index = header_index("Monday")
                    found_section = True
        else:
            if len(row) > 0:
                DayOfWeek_sum += float(row[DayOfWeek_index])
            else:
                break
        print(DayOfWeek_sum)

问题分析

  • 计数器初始化错误:DayOfWeek_sum被设为字符串'Monday',后续拼接只会变成字符串累加,完全达不到计数目的,应该初始化为整数0
  • 函数调用错误:header_index("Monday")是未定义的函数,正确做法是用列表的index()方法获取列索引
  • 表头逻辑错误:找到包含"DayOfWeek"的行后,不该用next(reader)跳过该行,当前行就是表头
  • 统计逻辑错误:不需要转成float累加,而是判断对应列值是否为'Monday',满足则计数器加1

修正后的代码

import csv

# 初始化周一计数器为0
monday_count = 0
file_path = r"C:\users\david\OneDrive\Documents\ArcGIS\Projects\MyProject1\Burglaries_TableToExcel.csv"

with open(file_path, 'r') as csv_file:   
    reader = csv.reader(csv_file, delimiter=",")
    day_of_week_index = None
    # 先遍历找到表头,确定DayOfWeek列的索引
    for row in reader:
        if "DayOfWeek" in row:
            day_of_week_index = row.index("DayOfWeek")
            break
    # 确认找到列索引后,统计周一出现次数
    if day_of_week_index is not None:
        for row in reader:
            # 避免行长度不足导致索引越界
            if len(row) > day_of_week_index and row[day_of_week_index] == "Monday":
                monday_count += 1
    # 输出结果
    print(f"周一出现的总数:{monday_count}")

修正说明

  1. 把计数器monday_count初始化为0,每次匹配到"Monday"就加1,符合计数逻辑
  2. 遍历找到包含"DayOfWeek"的表头行,用row.index("DayOfWeek")获取对应列的位置
  3. 遍历数据行时,增加行长度检查,避免因空行或短行导致索引越界报错
  4. 直接判断对应列的值是否为"Monday",满足条件则计数,逻辑清晰直接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:25:20