如何将Excel表格转换为含MAIN_ID对应最大VALUE的JSON格式
解决方案:Excel转指定结构JSON(取MAIN_ID对应VALUE最大值)
嘿,咱们来搞定这个Excel转JSON的任务,要求每个MAIN_ID只保留对应分组里的最大VALUE值。下面我会一步步拆解需求,给出清晰的实现方案。
原始Excel数据
先把你提供的Excel数据整理成更直观的表格:
| MAIN_ID | SUB_ID | VALUE | 备注 |
|---|---|---|---|
| 1000 | 1000-A1 | 10 | |
| 1000 | 1000-A2 | 15 | |
| 1000 | 1000-A3 | 20 | MAIN_ID 1000对应的最大值 |
| 1001 | 1001-A1 | 12 | |
| 1001 | 1001-A2 | 14 | |
| 1001 | 1001-A3 | 25 | MAIN_ID 1001对应的最大值 |
核心需求明确
生成的JSON必须符合以下结构,每个MAIN_ID对应的VALUE是该分组下的最大值:
{ "data": [ { "MAIN_ID":..., "VALUE":... } ] }
Python实现方案(用pandas高效处理)
pandas是处理表格数据的利器,几行代码就能完成分组取最大值和格式转换:
import pandas as pd import json # 读取Excel文件(替换成你的文件路径,默认读取第一个工作表) df = pd.read_excel('your_excel_file.xlsx') # 按MAIN_ID分组,提取每组VALUE的最大值,重置索引保证结构正确 max_values_df = df.groupby('MAIN_ID')['VALUE'].max().reset_index() # 转换为要求的JSON结构 final_json = {"data": max_values_df.to_dict('records')} # 打印格式化后的JSON,或者写入文件 print(json.dumps(final_json, indent=2)) # 如果需要保存到文件,取消下面注释 # with open('output.json', 'w') as f: # json.dump(final_json, f, indent=2)
运行后输出的JSON结果
执行上述代码后,你会得到符合要求的输出:
{ "data": [ { "MAIN_ID": 1000, "VALUE": 20 }, { "MAIN_ID": 1001, "VALUE": 25 } ] }
额外说明
- 如果你的Excel数据在特定工作表,可在
pd.read_excel中指定sheet_name参数,比如pd.read_excel('file.xlsx', sheet_name='Sheet2') - 如果你不想用pandas,也可以用
openpyxl库手动逐行读取Excel数据,然后用字典来跟踪每个MAIN_ID的最大值,但pandas的实现更简洁高效
内容的提问来源于stack exchange,提问作者USM
相关产品推荐
相关产品推荐

