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

如何统计CSV文件中每10行内true值的出现次数并修正现有代码?

问题解决:CSV文件每10行布尔值统计

需求说明

需要对CSV文件中布尔值列(true/false)按每10行统计true的出现次数。现有代码读取指定文件夹下的CSV文件,选取t和f列后添加统计列,但使用.sum方法未实现预期效果。

现有代码问题分析

  • .sum未加括号,实际是引用方法对象而非执行求和计算
  • 当前代码是计算整列的布尔值总和,而非每10行滑动窗口内的统计

修正后的代码

import pandas as pd   
import numpy as np       
import glob   
import os  

all_files = glob.glob("C:/Users/Gamer/Documents/Colbun/Saturn/*.csv")   

for f in all_files:   
    df = pd.read_csv(f, header=0, usecols=["t","f"])
    # 直接生成布尔判断列,比apply更高效
    df['f<49.975'] = df['f'] < 49.975
    df['f>50.025'] = df['f'] > 50.025
    # 按每10行窗口统计true的出现次数,min_periods=1确保不足10行时也能计算
    df['f<49.975_10row_count'] = df['f<49.975'].rolling(window=10, min_periods=1).sum().astype(int)
    df['f>50.025_10row_count'] = df['f>50.025'].rolling(window=10, min_periods=1).sum().astype(int)
    # 输出处理后的文件
    output_filename = f'{os.path.basename(f).split(".")[0]}_ext.csv'
    output_path = f'C:/Users/Gamer/Documents/Colbun/Saturn2/{output_filename}'
    df.to_csv(output_path, index=False)

代码说明

  • 用列直接运算生成布尔列,替代低效的apply方法
  • rolling(window=10)创建10行滑动窗口,sum()自动将True视为1、False视为0,统计窗口内true的数量
  • min_periods=1保证文件开头不足10行的部分也能正常统计
  • astype(int)将浮点型求和结果转为整数,符合计数的直观需求

内容的提问来源于stack exchange,提问作者Isaac Rojas Oyarzun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 17:10:37