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

pandas for循环创建多个DataFrame仅保存最后一个结果的问题咨询

问题原因及解决方案

你代码的问题核心是:for循环中的base是临时迭代变量,每次对它赋值只会覆盖当前迭代的临时变量值,不会保留之前的处理结果,也不会修改bases列表的原始元素,因此循环结束后仅能拿到最后一次迭代的处理结果。

方案1:将处理结果存入新列表后续调用

bases = [base1, base1_a, base1_b]
processed_bases = []  # 存储所有处理后的数据集
for base in bases:
    processed = base.groupby(["Cliente_id", "Periodo_id"]).agg({"monto_2018": ["sum", "mean", "min", "max"]}).reset_index().round(1)
    processed.columns = processed.columns.get_level_values(1)
    processed = processed.set_axis(["Cliente_id", "Periodo_id", 'sum_v', 'mean_v', 'min_v', "max_v"], axis=1, inplace=False)
    processed_bases.append(processed)

后续调用时:

  • processed_bases[0] 对应base1的处理结果
  • processed_bases[1] 对应base1_a的处理结果
  • processed_bases[2] 对应base1_b的处理结果

方案2:循环中直接保存为本地文件

如果需要直接导出为独立的csv文件,可按文件名匹配循环导出:

bases = [base1, base1_a, base1_b]
# 自定义三个结果的文件名,和上面的数据集顺序一一对应
output_names = ["base1处理结果.csv", "base1_a处理结果.csv", "base1_b处理结果.csv"]

for base, output_name in zip(bases, output_names):
    base = base.groupby(["Cliente_id", "Periodo_id"]).agg({"monto_2018": ["sum", "mean", "min", "max"]}).reset_index().round(1)
    base.columns = base.columns.get_level_values(1)
    base = base.set_axis(["Cliente_id", "Periodo_id", 'sum_v', 'mean_v', 'min_v', "max_v"], axis=1, inplace=False)
    # 导出为csv,不需要索引列
    base.to_csv(output_name, index=False, encoding="utf-8-sig")

内容的提问来源于stack exchange,提问作者Shirley Michelle Redroban

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:36:01