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

如何用pandas在单次循环中将多个JSON数组写入同一Excel文件

问题解决方法

你当前代码每次调用pd.DataFrame(...).to_excel("output.xlsx")时,默认都会直接覆盖原文件,所以最终只会保留最后一次循环写入的内容,可根据需求选择以下两种方案修改:

方案1:所有数据合并写入同一个Sheet

在循环外先初始化一个空的DataFrame用于承接所有数据,每次循环将新获取的JSON数组转换为DataFrame后追加到总表中,循环结束后统一导出即可,修改后代码如下:

import pandas as pd

# 循环外初始化空DataFrame存储所有数据
all_resources = pd.DataFrame()

for t in liste:
    response = client.list_discovered_resources(
        resourceType=t,
        limit=0,
        includeDeletedResources=False,
    )
    if response['resourceIdentifiers']:    
        print('\n ******************** Resources of Type ',t,'\n')
        print(jsbeautifier.beautify(str(response['resourceIdentifiers']))) 
        # 单次获取的资源转换为DataFrame
        current_df = pd.DataFrame(response['resourceIdentifiers'])
        # 追加到总表,ignore_index重置行索引避免重复
        all_resources = pd.concat([all_resources, current_df], ignore_index=True)

# 循环结束后一次性导出所有数据,index=False表示不导出pandas默认行号
all_resources.to_excel("output.xlsx", index=False)

方案2:不同类型的资源写入同一个Excel的不同Sheet

如果你想把每种资源类型的数据分开存到不同的Sheet页,可以用pd.ExcelWriter实现,代码如下:

import pandas as pd

with pd.ExcelWriter("output.xlsx") as writer:
    for t in liste:
        response = client.list_discovered_resources(
            resourceType=t,
            limit=0,
            includeDeletedResources=False,
        )
        if response['resourceIdentifiers']:    
            print('\n ******************** Resources of Type ',t,'\n')
            print(jsbeautifier.beautify(str(response['resourceIdentifiers']))) 
            current_df = pd.DataFrame(response['resourceIdentifiers'])
            # 写入对应名称的Sheet,注意Sheet名称不能超过31字符,不能包含\/?*[]等特殊字符
            current_df.to_excel(writer, sheet_name=str(t), index=False)

注意:如果运行时提示缺少Excel写入引擎,可执行pip install openpyxl安装依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:39:03