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

如何基于CSV文件的日期列筛选条件,对温度列的值进行求和?

嗨,这个需求其实挺常见的,我给你分享几种不同工具的实现方法,你可以根据自己的习惯来选:

使用Python处理(适合有编程基础的同学)

如果你熟悉Python,用pandas库来处理会非常高效,代码简洁易懂:

import pandas as pd

# 读取CSV文件,假设你的文件名叫temp_data.csv,分隔符是空格(根据示例数据的格式)
# 如果你的CSV是逗号分隔,把sep参数改成','即可
df = pd.read_csv('temp_data.csv', sep=' ', header=None, names=['date', 'temp'])

# 筛选2016年2月的记录:日期大于20160131,小于20160301
filtered_records = df[(df['date'] > 20160131) & (df['date'] < 20160301)]

# 计算对应温度的总和
total_temperature = filtered_records['temp'].sum()

print(f"2016年2月的温度总和是:{total_temperature}")

要是你不想用pandas,用Python内置的csv模块也能实现,只是代码稍长一点:

import csv

total = 0
with open('temp_data.csv', 'r') as f:
    reader = csv.reader(f, delimiter=' ')
    for row in reader:
        date = int(row[0])
        temp = int(row[1])
        if 20160131 < date < 20160301:
            total += temp

print(f"2016年2月温度总和:{total}")
使用Excel处理(适合非编程用户)

如果你更习惯用Excel,操作起来也很简单:

  1. 直接打开你的CSV文件,Excel会自动识别分隔符(如果是空格分隔,导入时注意选择“空格”作为分隔符);
  2. 使用SUMIFS函数计算总和,在空白单元格输入公式:
    =SUMIFS(B:B, A:A, ">20160131", A:A, "<20160301")
    
    这里的B:B是温度列,A:A是日期列,公式会自动求和所有符合日期条件的温度值;
  3. 你也可以用手动筛选:选中日期列,点击「筛选」按钮,选择「自定义筛选」,设置条件为“大于20160131”且“小于20160301”,之后选中筛选后的温度列,Excel状态栏会直接显示求和结果(或者用=SUBTOTAL(9, B:B)来计算筛选后的总和)。
使用命令行awk工具(适合Linux/macOS用户)

如果你习惯用命令行,awk工具可以快速完成这个任务,不需要打开任何图形界面:

awk '$1 > 20160131 && $1 < 20160301 {sum += $2} END {print sum}' temp_data.csv

解释一下:awk会逐行读取CSV文件,$1代表第一列的日期,$2代表第二列的温度;当日期满足条件时,就把温度累加到sum变量里,最后在处理完所有行后输出总和。

内容的提问来源于stack exchange,提问作者P.Hinz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:03:02