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

gspread嵌套列表处理:指定列求和并追加至行的问题

问题解决:计算谷歌表格数据列总和并追加到指定行

原数据结构

从谷歌表格获取的嵌套列表如下:

[['Date', 'Description', 'Income', 'Expense', 'Currency', 'Exchange Rate', 'Bank account', 'Converted amount', 'Converted currency', 'Total expenses £', 'Total expenses €'],
['2024-06-06', 'Gardener', '', '500', '£', '1.191', 'bank name', 595.5, '€'],
['2024-07-15', 'Keys cut', '', '16', '£', '1.1902', 'bank name', 19.0432, '€'],
['2024-07-15', 'Skip hire', '', '300', '£', '1.1902', 'bank name', 357.06, '€']]

需求

  1. 将Expense列的字符串值('500'、'16'、'300')转为浮点数后求和
  2. 将Converted amount列的浮点数值(595.5、19.0432、357.06)求和
  3. 把这两个总和追加到列表的第二行(即索引为1的行)

原代码问题分析

你写的代码存在两个核心问题:

  • 每次循环都重新初始化total_gbp和total_eur为空列表,导致每次只能存储当前行的单个值,无法累加所有行的数据
  • 每次循环都往第二行追加当前行的计算值,最终第二行会被追加多个单个值,而不是最终的总和

原错误代码:

for row in list_of_lists[1:]:
    total_gbp = []
    expense_gbp = float(row[3])
    total_gbp.append(expense_gbp)
    list_of_lists[1].append(sum(total_gbp))

    total_eur = []
    expense_eur = row[7]
    total_eur.append(expense_eur)
    list_of_lists[1].append(sum(total_eur))

正确实现代码

先初始化两个总和变量,循环遍历所有数据行进行累加,最后一次性将总和追加到第二行:

# 初始化总和变量
total_gbp = 0.0
total_eur = 0.0

# 遍历所有数据行(跳过表头行)
for row in list_of_lists[1:]:
    # 累加Expense列的数值(转浮点数)
    total_gbp += float(row[3])
    # 累加Converted amount列的数值
    total_eur += row[7]

# 将两个总和追加到第二行(索引1的行)
list_of_lists[1].extend([total_gbp, total_eur])

执行后,第二行的末尾会追加816.0(500+16+300)和971.6032(595.5+19.0432+357.06)两个总和值,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:40:55