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

求助:实现Excel全列数据完整上传至Google Sheets

解决全列上传至Google Sheets的问题

问题出在你使用了未重置索引的pivot对象的values属性,导致仅提取了聚合后的数值列,丢失了作为行索引的Account ID、Account Name等关键列。

修改步骤如下:

  1. 复用重置索引后的数据集:你已经通过pivot.reset_index()生成了包含所有列的结构化数据,上传时应该直接使用这个数据集,而非原始的pivot对象。
  2. 调整数据提取逻辑:替换pivot.values.tolist()为重置索引后DataFrame的转列表操作。

修改后的完整代码:

sheet2 = client.open("Dashboard name").worksheet('W1')

# 生成透视表,仅对需要聚合的TB列设置values参数
pivot = filtered_data.pivot_table(
    index=['Account ID','Account Name','Contract ID','Code Value'],
    values=['TB'],
    aggfunc=sum, 
    fill_value=0
)
pivot.ffill(inplace=True)

# 重置索引,将行索引转为普通列
pivot_reset = pivot.reset_index()

# 保留原有Excel写入逻辑
pivot_reset.to_excel(writer,sheet_name='Work_Sheet2',index=False)

# 提取包含所有列的数据列表
t1 = pivot_reset.values.tolist()
fc = sheet2.col_values(1)
rs = len(fc)+1
sheet2.insert_rows(t1, rs)

额外优化说明:

  • 透视表的values参数无需重复索引列,因为索引列已经通过index参数定义,重复添加会生成无意义的聚合列(对ID类列使用sum函数没有实际价值)。
  • 将重置索引后的DataFrame赋值给变量pivot_reset,避免重复调用reset_index(),提升代码可读性和执行效率。

修改后,上传的t1会包含Account ID、Account Name、Contract ID、Code Value和TB所有列的数据,实现预期的全列上传效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 02:58:16