如何按日期维度拆分大型JSON气象数据,将同维度数据存入对应文件
解决方案
核心逻辑是先按目标时间维度(月份/日期)分组聚合数据,所有数据处理完成后再统一写入文件,避免单条数据反复IO的同时保证输出JSON格式合法。
调整后完整代码
import json from datetime import datetime # 初始化分组字典,key为时间维度字符串,value为对应数据列表 grouped_data = {} with open('data.json','r', encoding='utf8') as f: d = json.load(f) hourly_list = d['hourly'] for item in hourly_list: timestamp = item['dt'] dt_obj = datetime.fromtimestamp(timestamp) # 按月份分组用 '%Y-%m',按日期分组用 '%Y-%m-%d' group_key = dt_obj.strftime('%Y-%m') # 格式化dt字段为指定时间字符串 item['dt'] = dt_obj.strftime('%Y-%m-%d %H:%M:%S') # 把当前条目加入对应分组 if group_key not in grouped_data: grouped_data[group_key] = [] grouped_data[group_key].append(item) # 所有数据分组完成后统一写入文件 for time_key, items in grouped_data.items(): file_name = f"{time_key}.json" with open(file_name, 'w', encoding='utf-8') as out_f: json.dump(items, out_f, indent=4, ensure_ascii=False)
改动说明
- 新增中间分组存储字典,避免每处理一条数据就触发一次文件IO,运行效率更高
- 直接从datetime对象提取分组维度,不需要从完整时间字符串中二次截取,逻辑更简洁
- 统一写入时直接输出数组结构,保证每个导出的JSON文件都是标准合法格式,后续读取无需额外处理
内容的提问来源于stack exchange,提问作者aerioeus
相关产品推荐
相关产品推荐

