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

Python基于唯一键与条件处理CSV数据求和问题

用Python实现Excel风格的分组求和(CSV数据处理)

嘿,我完全懂你这种“Excel操作溜得飞起,但换成Python就卡壳”的感受——毕竟Excel的可视化操作太直观了,换成代码确实需要一点点逻辑转换。针对你的需求(导入CSV,按A列唯一值分组,对B列满足1990<x<2000的对应C列求和),我整理了两种实用的实现方式,从原生模块到高效工具都有:


方法一:用Python原生csv模块实现(无需额外安装库)

如果你不想安装第三方库,用自带的csv模块就能搞定,逻辑和Excel里的“筛选+分类汇总”完全对应:

实现思路

  1. 打开CSV文件并读取数据
  2. 初始化一个字典,用来存储A列唯一值对应的C列求和结果
  3. 遍历每一行数据:
    • 先判断B列的年份是否在1990到2000之间
    • 如果符合条件,就把对应C列的值累加到A列对应键的总和里
  4. 最后输出或处理求和结果

完整代码

import csv

# 初始化存储结果的字典:key是A列的唯一值,value是对应C列的求和结果
sum_result = {}

with open('your_file.csv', 'r', newline='', encoding='utf-8') as csvfile:
    # 创建CSV读取器,同时获取表头
    reader = csv.DictReader(csvfile)
    
    for row in reader:
        # 把字符串类型的列转成数值(CSV读取的都是字符串)
        a_value = row['A']
        b_year = int(row['B'])
        c_value = int(row['C'])
        
        # 判断年份是否符合条件:1990 < 年份 < 2000
        if 1990 < b_year < 2000:
            # 如果A列值不在字典里,先初始化总和为0
            if a_value not in sum_result:
                sum_result[a_value] = 0
            # 累加C列的值
            sum_result[a_value] += c_value

# 打印最终结果
print("按A列分组的C列求和结果(仅统计B列1990-2000的数据):")
for a_key, total in sum_result.items():
    print(f"A列值: {a_key}, 对应C列总和: {total}")

方法二:用pandas实现(大量数据场景首推)

如果你的数据量很大,原生csv模块的效率会有点跟不上,这时候pandas就是最佳选择——它的语法和Excel的操作逻辑更贴近,代码也更简洁:

实现思路

  1. 用pandas读取CSV文件
  2. 筛选出B列年份在1990到2000之间的行
  3. 按A列分组,对C列进行求和
  4. 输出或保存结果

完整代码

import pandas as pd

# 读取CSV文件
df = pd.read_csv('your_file.csv')

# 筛选符合条件的行:B列年份大于1990且小于2000
filtered_df = df[(df['B'] > 1990) & (df['B'] < 2000)]

# 按A列分组,对C列求和
sum_result = filtered_df.groupby('A')['C'].sum()

# 打印结果(也可以用sum_result.to_csv()保存到文件)
print("按A列分组的C列求和结果:")
print(sum_result)

针对你的示例数据,运行结果会是:

A
1    133
2     69
4     29
5     85
Name: C, dtype: int64

两种方法的适用场景

  • 原生csv模块:适合小数据量、不想安装第三方库的场景,代码完全依赖Python自带工具
  • pandas:适合大量数据处理,运行效率更高,语法更简洁,后续还能轻松扩展更多Excel风格的操作(比如排序、筛选、透视表等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:56:41