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

循环仅保存最后一个DataFrame至CSV,如何保存每个迭代的DataFrame?

问题排查与解决方案

核心问题分析

  1. 数据累加导致重复处理历史内容
    两段代码里,每次循环都把当前迭代的i追加到inverterdata列表,再基于整个列表生成invdata。这意味着每一轮生成的data2都会包含之前所有迭代的数据,而非当前单次迭代的独立结果——如果最后统一保存,自然只会得到最后一次包含全部历史的DataFrame。

  2. 第二段代码存在未定义变量错误
    第二段代码直接使用了hh变量,但没有定义hh = data.explode('1.telemetries')这一行,运行时会直接抛出NameError: name 'hh' is not defined,根本无法执行完成。

  3. 缺少单次迭代的CSV保存逻辑
    两段代码都没有在每次迭代时调用to_csv保存当前的data2,如果只是最后合并final列表再保存,当然只会生成一个包含所有数据的CSV,而非每个迭代单独一个文件。

修正后的代码示例

场景1:每次迭代保存独立CSV文件

如果需要为每个迭代生成单独的CSV文件,可以这样修改:

import pandas as pd
import json

# 假设name和invertersinfo已提前定义
for idx, (inv_id, inv_info) in enumerate(invertersinfo.items()):
    # 直接处理当前单次迭代的数据,无需累加历史
    invdata = pd.DataFrame([[inv_id, inv_info]])
    data = pd.json_normalize(json.loads(invdata.to_json(orient="records")))
    hh = data.explode('1.telemetries')                         
    data2 = pd.json_normalize(json.loads(hh.to_json(orient="records")))  
    data2 = data2.drop(['1.count', '0'], axis=1) 
    data2.columns = [col.replace('1.telemetries.', '') for col in data2.columns]
    data2.columns += "_" + name
    
    # 用迭代索引+设备ID区分文件名,避免覆盖
    data2.to_csv(f'inverter_data_{idx}_{inv_id}.csv', index=False)

场景2:合并所有迭代数据后保存到单个CSV

如果需要把所有迭代的DataFrame合并成一个文件保存:

import pandas as pd
import json

final = []
for inv_id, inv_info in invertersinfo.items():
    invdata = pd.DataFrame([[inv_id, inv_info]])
    data = pd.json_normalize(json.loads(invdata.to_json(orient="records")))
    hh = data.explode('1.telemetries')                         
    data2 = pd.json_normalize(json.loads(hh.to_json(orient="records")))  
    data2 = data2.drop(['1.count', '0'], axis=1) 
    data2.columns = [col.replace('1.telemetries.', '') for col in data2.columns]
    data2.columns += "_" + name
    final.append(data2)

# 合并所有DataFrame并保存
combined_df = pd.concat(final, ignore_index=True)
combined_df.to_csv('all_inverter_data.csv', index=False)

关键修正点

  • 移除了inverterdata的累加逻辑,每次仅处理当前迭代的单条数据,避免重复生成包含历史的DataFrame。
  • 修复了hh变量未定义的错误。
  • 添加了明确的CSV保存逻辑,根据需求选择单次保存或合并后保存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 13:21:33