如何使用Pandas将特定结构CSV数据转换为指定格式JSON
你可以直接使用以下代码完成格式转换,输出结果和你要求的JSON结构完全匹配:
import json import numpy as np # 转换日期为字符串列表 dates_list = [str(date.item()) if isinstance(date, np.generic) else str(date) for date in dates] # 初始化points字典 points_content = { "dates": dates_list } # 遍历所有点位生成对应结构 for i in range(len(lon_all)): # 处理numpy类型转原生Python类型+统一转字符串,匹配示例格式 lon = str(lon_all[i][0].item()) if isinstance(lon_all[i][0], np.generic) else str(lon_all[i][0]) lat = str(lat_all[i][0].item()) if isinstance(lat_all[i][0], np.generic) else str(lat_all[i][0]) val = str(val_all[i][0].item()) if isinstance(val_all[i][0], np.generic) else str(val_all[i][0]) measurements = [str(m.item()) if isinstance(m, np.generic) else str(m) for m in measurements_all[i]] # 点位索引用字符串类型作为key points_content[str(i)] = { "lon": lon, "lat": lat, "measurements": measurements, "val": val } # 封装最终结构 final_result = { "points": points_content } # 格式化输出JSON,缩进和示例一致 print(json.dumps(final_result, indent=4, ensure_ascii=False)) # 如果要保存到文件,使用下面的代码 # with open("output.json", "w", encoding="utf-8") as f: # json.dump(final_result, f, indent=4, ensure_ascii=False)
说明:
- 代码中额外增加了numpy类型兼容处理,避免numpy数值类型直接序列化JSON时出现报错
- 所有字段都统一转换为字符串格式,和你给出的示例结构完全对齐
indent=4参数可以保证输出的JSON缩进效果和示例一致,不需要格式化输出可以直接去掉该参数
内容的提问来源于stack exchange,提问作者Steffan
相关产品推荐
相关产品推荐

