Python - 从 JSON 转换为 CSV

问题描述 投票:0回答:1

我正在尝试实现一些 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)

这样,它就会正确返回打印结果,如下图所示:

Current result

预期的结果会是这样的:

Expected result

我不知道循环中失败或丢失了什么来查找特定值,然后返回特定数据,如第二张图所示。

python json csv multidimensional-array nested
1个回答
0
投票

您正在尝试展开 JSON 文件。 尝试将json转换为树,然后以正确的方式遍历树以获得每一行。

© www.soinside.com 2019 - 2024. All rights reserved.