我正在尝试实现一些 JSON 数据到 CSV 的转换,以供以后分析。
问题是由于 n 嵌套级别造成的,我认为,主要是转换过程的最后阶段。
到目前为止,我已经能够创建正确的数据行映射,但是一旦我尝试将相应的数据包含到每行中 x'000 次,它就会失败。
我从网站下载了数据,并从桌面上的离线文件中使用它,但 JSON 数据来自: https://ws.cso.ie/public/api.restful/PxStat.Data.Cube_API.ReadDataset /HSA06/JSON-stat/1.0/zh
来自爱尔兰数据部门:https://data.gov.ie/dataset/hsa06-average-price-of-houses
我的最后一个代码是:
import json
import csv
local_file_path = "/Users/piuno/OneDrive - Asociación Club Taller Cultural/full_data_housing.json"
# Load JSON data from file
with open(local_file_path, 'r') as json_file:
data = json.load(json_file)
# Writing to csv
with open('output.csv', mode='w', newline='') as file:
writer = csv.writer(file)
# Write header
header = ['Statistic', 'Quarter', 'Area', 'Value']
writer.writerow(header)
# Write data rows
statistic_mapping = data['dataset']['dimension']['STATISTIC']['category']['label']
quarter_mapping = data['dataset']['dimension']['TLIST(Q1)']['category']['label']
area_mapping = data['dataset']['dimension']['C02343V02817']['category']['label']
values = data['dataset']['value']
print("Statistical Mapping:", statistic_mapping)
print("Quarter Mapping:", quarter_mapping)
print("Area Mapping:", area_mapping)
for i in range(len(values)):
if values[i] is not None:
statistic_index = i // (len(data['dataset']['dimension']['TLIST(Q1)']['category']['index']) * len(data['dataset']['dimension']['C02343V02817']['category']['index']))
quarter_index = (i % (len(data['dataset']['dimension']['TLIST(Q1)']['category']['index']) * len(data['dataset']['dimension']['C02343V02817']['category']['index']))) // len(data['dataset']['dimension']['C02343V02817']['category']['index'])
area_index = i % len(data['dataset']['dimension']['C02343V02817']['category']['index'])
row = [statistic_mapping[str(statistic_index)], quarter_mapping[str(quarter_index)], area_mapping[str(area_index)], values[i]]
writer.writerow(row)
这样,它就会正确返回打印结果,如下图所示:
预期的结果会是这样的:
我不知道循环中失败或丢失了什么来查找特定值,然后返回特定数据,如第二张图所示。
您正在尝试展开 JSON 文件。 尝试将json转换为树,然后以正确的方式遍历树以获得每一行。