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

如何将Pandas计算的CUMSUM结果分别存入Excel不同单元格?

问题:将CUMSUM计算结果存入Excel指定单元格

首先,先回顾你的原代码和它的运行输出:

原Python代码

import pandas as pd
datas1 = [{'A':10, 'B':100}, {'A':11,'B':-210}, {'A':12,'B':120}, {'A':14, 'B':30}]
datas2 = [{'A':25, 'B':90}, {'A':11,'B':-50}, {'A':110,'B':(-15)}, {'A':5, 'B':65}]
datas3 = [{'A':5, 'B':-100}, {'A':19,'B':210}, {'A':12,'B':-300}, {'A':14, 'B':30}]
for i in [datas1, datas2, datas3]:
    df = pd.DataFrame(i)
    df['CUMSUM'] = (df['B'].cumsum())
    if (df['CUMSUM'] < -100).any():
        print(df.loc[df['CUMSUM'] < -100, :].head(1))
        print ("")
    else:
        print(df.loc[df['CUMSUM'] >= -100, :].tail(1))
        print ("")

原运行输出

A B CUMSUM
1 11 -210 -110

A B CUMSUM
3 5 65 90

A B CUMSUM
2 12 -300 -190

你的需求

如何将上述输出中的每个CUMSUM结果分别存入Excel工作表的不同单元格?例如将-110存入A1单元格,90存入A2单元格,-190存入A3单元格,以此类推。


解决方案:用pandas收集结果并写入Excel

因为你已经在使用pandas处理数据,直接用pandas的ExcelWriter来实现会非常顺畅,只需要在原代码中添加结果收集和写入的逻辑即可。修改后的代码如下:

import pandas as pd

datas1 = [{'A':10, 'B':100}, {'A':11,'B':-210}, {'A':12,'B':120}, {'A':14, 'B':30}]
datas2 = [{'A':25, 'B':90}, {'A':11,'B':-50}, {'A':110,'B':(-15)}, {'A':5, 'B':65}]
datas3 = [{'A':5, 'B':-100}, {'A':19,'B':210}, {'A':12,'B':-300}, {'A':14, 'B':30}]

# 初始化列表,用来存储每次得到的目标CUMSUM值
cumsum_results = []

for i in [datas1, datas2, datas3]:
    df = pd.DataFrame(i)
    df['CUMSUM'] = df['B'].cumsum()
    
    if (df['CUMSUM'] < -100).any():
        # 提取第一个符合条件的CUMSUM值
        target_cumsum = df.loc[df['CUMSUM'] < -100, 'CUMSUM'].iloc[0]
        cumsum_results.append(target_cumsum)
        # 保留原打印逻辑(如果不需要可以删掉)
        print(df.loc[df['CUMSUM'] < -100, :].head(1))
        print("")
    else:
        # 提取最后一个符合条件的CUMSUM值
        target_cumsum = df.loc[df['CUMSUM'] >= -100, 'CUMSUM'].iloc[-1]
        cumsum_results.append(target_cumsum)
        # 保留原打印逻辑(如果不需要可以删掉)
        print(df.loc[df['CUMSUM'] >= -100, :].tail(1))
        print("")

# 将结果转换为DataFrame,索引从1开始对应Excel行号
result_df = pd.DataFrame(cumsum_results, columns=['CUMSUM'], index=range(1, len(cumsum_results)+1))

# 写入Excel文件,指定从A1开始写入,不包含表头
with pd.ExcelWriter('cumsum_results.xlsx') as writer:
    result_df.to_excel(writer, sheet_name='Sheet1', startrow=0, startcol=0, header=False)

print("CUMSUM结果已成功写入Excel的A1、A2、A3单元格!")

关键逻辑说明

  • 收集结果:创建cumsum_results列表,在每次循环中提取我们需要的CUMSUM值并添加进去;
  • 转换为DataFrame:设置索引从1开始,这样写入Excel时,第一条结果对应A1,第二条对应A2,以此类推;
  • 写入Excel:使用ExcelWriter打开文件,通过header=False去掉表头,startrow=0, startcol=0确保从A1单元格开始写入。

运行这段代码后,你会得到一个名为cumsum_results.xlsx的文件,其中A1单元格是-110,A2是90,A3是-190,完全满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:32:02