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

如何在for循环中将结果保存为同一文件的不同列(避免覆盖)

解决循环保存结果为同一文件不同列的问题

你的代码每次循环调用np.savetxt()时会直接覆盖整个文件,导致之前的结果丢失。要实现将每次循环的结果作为不同列保存,需要先收集所有计算结果,再一次性写入文件,以下是两种可行的实现方式:

方法一:使用Pandas处理(推荐,更直观)

利用Pandas的DataFrame来管理列数据,所有文件处理完成后统一保存:

import pandas as pd
import os
import numpy as np

def get_df():
    result_df = pd.DataFrame()
    os.chdir("C:/Users/s/Desktop/P")
    for file in os.listdir():
        if file.endswith('.csv'):
            # 补充读取CSV文件到数组a的逻辑(原代码缺失此步骤,需根据实际调整)
            a = pd.read_csv(file).values
            av_a = np.average(a, axis=0)
            # 将当前平均值作为新列加入DataFrame,用文件名作为列名便于区分
            result_df[file] = av_a
    
    # 一次性保存所有列到CSV
    result_df.to_csv('merged_average.csv', index=False)

方法二:使用Numpy处理

通过收集所有结果数组,再按列拼接后保存:

import os
import numpy as np

def get_df():
    all_avgs = []
    os.chdir("C:/Users/s/Desktop/P")
    for file in os.listdir():
        if file.endswith('.csv'):
            # 读取CSV文件到numpy数组
            a = np.loadtxt(file, delimiter=',')
            av_a = np.average(a, axis=0)
            all_avgs.append(av_a)
    
    # 将所有结果按列拼接成二维数组
    merged_data = np.column_stack(all_avgs)
    # 写入文件
    np.savetxt('merged_average.csv', merged_data, delimiter=',')

关键说明

  • 原代码缺失从CSV文件读取数据到变量a的逻辑,上述代码中已补充基础读取方式,请根据你的实际数据格式调整读取部分。
  • 两种方法均避免了循环中重复写入文件导致的覆盖问题,而是先汇总所有结果再一次性输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:51:19