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

基于数据集指定列分组求同组数值最大最小差值的问题排查

代码问题原因

  • 问题1:每组的最后一个元素未被加入临时列表
    你的逻辑是只有当前行和下一行日期相同时,才会把当前行的数值加入temp_list,每组的最后一行和下一行日期不同,永远不会触发加入逻辑,导致每组少了最后一个值。比如第一组的23就没有被加入列表,你计算的是5、6、10的max-min=5,和你输出的第一个值一致。
  • 问题2:最后一组数据未被处理
    你的循环只遍历到倒数第二行,最后一组遍历结束后不会触发else分支的计算逻辑,所以结果里缺了最后一组的差值。
  • 额外说明:你贴的代码里的dataset和你问题里举的示例数据集不一致,这也是输出和预期对不上的原因之一。

修复后的代码(基于原有逻辑修改)

# 用你给出的预期输出对应的数据集
dataset = [[1,5],[1,6],[1,10],[1,23],[2,4],[2,8],[2,12],[3,10],[3,20],[3,40],[4,50],[4,500]]
temp_list = []
daily_total = []
for i in range(len(dataset)):
    # 先把当前行的值加入临时列表
    temp_list.append(dataset[i][1])
    # 判断是不是最后一行,或者下一行和当前行日期不同
    if i == len(dataset)-1 or dataset[i][0] != dataset[i+1][0]:
        max_ = max(temp_list)
        min_ = min(temp_list)
        daily_total.append(max_ - min_)
        temp_list = []

print(daily_total) # 输出 [18, 8, 30, 450],和预期一致

更简洁的实现方案(用itertools.groupby)

如果你的数据集已经按日期列排序好了,可以直接用分组工具,不用手动判断分组边界:

from itertools import groupby

dataset = [[1,5],[1,6],[1,10],[1,23],[2,4],[2,8],[2,12],[3,10],[3,20],[3,40],[4,50],[4,500]]
daily_total = []
# 按第一列分组
for date, group in groupby(dataset, key=lambda x: x[0]):
    values = [item[1] for item in group]
    daily_total.append(max(values) - min(values))

print(daily_total)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 07:51:04