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

如何对任意数量DataFrame的指定列执行无循环求和并赋值

实现方案

方法1:pd.concat+分组求和(推荐,效率更高)

仅依赖pandas原生接口实现,适合处理大量DataFrame的场景,内存开销更低:

import pandas as pd

sum_cols = ['a', 'b', 'c']
final_df[sum_cols] = pd.concat([df[sum_cols] for df in dfs], axis=0).groupby(level=0).sum()

逻辑说明:把所有DataFrame的目标列上下堆叠后,按照相同索引分组求和,得到每个索引位置对应列的累加结果。

方法2:reduce累加(逻辑更直观)

和原有加法逻辑完全对齐,适合DataFrame数量较少的场景:

from functools import reduce
import operator

sum_cols = ['a', 'b', 'c']
final_df[sum_cols] = reduce(operator.add, (df[sum_cols] for df in dfs))

逻辑说明:通过reduce迭代调用加法操作,把列表中所有DataFrame的目标列依次累加,得到最终结果。

注意事项

  • 两种方案都要求列表内所有DataFrame的索引完全一致,且都包含sum_cols指定的列
  • 均无显式for循环,迭代逻辑由Python/pandas内置接口封装,执行效率高于手写for循环

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:15:00