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

如何在不使用pandas的情况下统计new.csv与old.csv的特定状态变更次数

不使用Pandas统计CSV中的状态变更

我们有两个CSV文件:new.csv和old.csv,文件内容如下:

旧文件(old.csv)内容

abc done
xyz done
pqr done
rst pending

新文件(new.csv)内容

abc pending
xyz not_done
pqr pending
rst done

需要统计两类状态变更:

  • count1:从done变为pending的条目数(预期结果:2,对应abc、pqr)
  • count2:从done变为not_done的条目数(预期结果:1,对应xyz)

纯Python实现代码

# 初始化统计计数器
count1 = 0
count2 = 0

# 读取旧文件,构建状态映射字典
old_status = {}
with open('old.csv', 'r') as f_old:
    for line in f_old:
        # 去除首尾空白,按空格分割(假设字段无空格)
        parts = line.strip().split()
        if len(parts) == 2:
            key, status = parts
            old_status[key] = status

# 读取新文件,对比状态并统计
with open('new.csv', 'r') as f_new:
    for line in f_new:
        parts = line.strip().split()
        if len(parts) == 2:
            key, new_status = parts
            # 只处理旧状态是done的条目
            if old_status.get(key) == 'done':
                if new_status == 'pending':
                    count1 += 1
                elif new_status == 'not_done':
                    count2 += 1

# 输出结果
print(f"count1(done→pending): {count1}")
print(f"count2(done→not_done): {count2}")

代码逻辑说明

  1. 构建旧状态字典:先读取old.csv,将每个条目的标识(第一列)作为键,状态(第二列)作为值存入字典,方便后续快速查找。
  2. 遍历新文件统计:逐行读取new.csv,对每个条目,先检查其在旧文件中的状态是否为done,再根据新状态判断属于哪类变更,对应计数器加1。
  3. 边界处理:代码中加入了len(parts) == 2的判断,避免空行或格式错误的行影响统计。

执行代码后输出结果:

count1(done→pending): 2
count2(done→not_done): 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:05:24