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

如何将Excel文件转换为嵌套数组?求批量转换解决方案

用Python+pandas处理Excel转嵌套数组(支持大规模数据)

核心思路

从你的数据结构来看,是三级嵌套结构:顶级键(a/b)→ 二级键(aa/ab/ba/bb)→ 元素列表。用pandas可以高效完成分组聚合,且支持大规模数据的分块处理,避免内存溢出。

步骤&代码

1. 安装依赖

如果还没装pandas和Excel处理库,先执行:

pip install pandas openpyxl

(如果是xls格式,换成xlrd)

2. 常规数据处理代码

假设你的Excel有三列,分别对应三级结构(比如列名是level1、level2、level3),代码如下:

import pandas as pd

# 读取Excel,仅加载需要的三列,减少内存占用
df = pd.read_excel("your_file.xlsx", usecols=["level1", "level2", "level3"])

# 分组聚合生成目标结构
result = {}
for level1_key, group in df.groupby("level1"):
    # 二级分组,把同一level2下的元素收集成列表
    level2_dict = group.groupby("level2")["level3"].apply(list).to_dict()
    result[level1_key] = [level2_dict]

# 输出结果或保存为文件
print(result)

3. 大规模数据优化方案

如果Excel文件超大(比如几十万行),用分块读取避免内存爆掉:

import pandas as pd

result = {}
chunk_size = 10000  # 每次读1万行,可根据自身内存调整

# 分块读取Excel
for chunk in pd.read_excel("your_large_file.xlsx", usecols=["level1", "level2", "level3"], chunksize=chunk_size):
    for level1_key, group in chunk.groupby("level1"):
        level2_dict = group.groupby("level2")["level3"].apply(list).to_dict()
        
        # 合并分块结果,避免重复分组
        if level1_key in result:
            existing_level2 = result[level1_key][0]
            for k, v in level2_dict.items():
                if k in existing_level2:
                    existing_level2[k].extend(v)
                else:
                    existing_level2[k] = v
        else:
            result[level1_key] = [level2_dict]

# 保存为JSON文件方便后续使用
import json
with open("result.json", "w", encoding="utf-8") as f:
    json.dump(result, f, indent=2, ensure_ascii=False)

补充说明

  • 如果你的Excel列名不是level1/level2/level3,直接替换成实际列名,或者用列索引(比如usecols=[0,1,2])。
  • 代码会自动去重吗?不会,如果需要给每个二级列表去重,把apply(list)改成apply(lambda x: list(set(x)))即可(注意会打乱元素顺序)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:22:46