怎样python将1维json怎么转为2维json

一维格式json需要写入excel时,但不知道怎么通过python转至为2维表格形式,以方便写入单元格:

json:
{
    "ret": 0,
    "msg": "",
    "E_T_DATA": [{
        "com_code": "300015_SZ",
        "com_name": "上市公司A",
        "fr_name": "现金流量表",
        "fr_item_flag": null,
        "fr_item": "销售商品、提供劳务收到的现金",
        "fr_day": "2019-06-30",
        "fr_value": 45531.65
    }, {
        "com_code": "300015_SZ",
        "com_name": "上市公司A",
        "fr_name": "现金流量表",
        "fr_item_flag": null,
        "fr_item": "销售商品、提供劳务收到的现金",
        "fr_day": "2019-09-30",
        "fr_value": 74922.04
    }, {
        "com_code": "300015_SZ",
        "com_name": "上市公司A",
        "fr_name": "现金流量表",
        "fr_item_flag": null,
        "fr_item": "销售商品、提供劳务收到的现金",
        "fr_day": "2019-12-31",
        "fr_value": 98298.58
    }, {
        "com_code": "300015_SZ",
        "com_name": "上市公司A",
        "fr_name": "现金流量表",
        "fr_item_flag": null,
        "fr_item": "经营活动现金流入小计",
        "fr_day": "2019-03-31",
        "fr_value": 21618.81
    }, {
        "com_code": "300015_SZ",
        "com_name": "上市公司A",
        "fr_name": "现金流量表",
        "fr_item_flag": null,
        "fr_item": "经营活动现金流入小计",
        "fr_day": "2019-06-30",
        "fr_value": 46396.82
    }, {
        "com_code": "300015_SZ",
        "com_name": "上市公司A",
        "fr_name": "现金流量表",
        "fr_item_flag": null,
        "fr_item": "经营活动现金流入小计",
        "fr_day": "2019-09-30",
        "fr_value": 76241.97
    }, {
        "com_code": "300015_SZ",
        "com_name": "上市公司A",
        "fr_name": "现金流量表",
        "fr_item_flag": null,
        "fr_item": "经营活动现金流入小计",
        "fr_day": "2019-12-31",
        "fr_value": 100051.55
    }]
}

怎么转为2维的表格样式,如下:

com_codecom_namefr_namefr_item_flagfr_item2019-03-312019-06-302019-09-302019-12-31
300015SZ上市公司A现金流量表null销售商品、提供劳务收到的现金2019-03-312019-06-302019-09-302019-12-31
300015SZ上市公司A现金流量表null经营活动现金流入小计2019-03-312019-06-302019-09-302019-12-31

import pandas as pd
import json

with open("./data.json", 'r', encoding='utf8') as f:

    # 获取需要的E_T_DATA值
    data = json.load(f)['E_T_DATA']

    # 将jsond对象还原为二维数据
    df = pd.json_normalize(data)

    # 设置com_code为索引列
    df.set_index('com_code', inplace=True)
    # 写入excel
    df.to_excel("result_data.xlsx")
    # 输出到终端
    print(df)
com_code    com_name    fr_name    fr_item_flag    fr_item    fr_day    fr_value
300015_SZ    上市公司A    现金流量表        销售商品、提供劳务收到的现金    2019-06-30    45531.65
300015_SZ    上市公司A    现金流量表        销售商品、提供劳务收到的现金    2019-09-30    74922.04
300015_SZ    上市公司A    现金流量表        销售商品、提供劳务收到的现金    2019-12-31    98298.58
300015_SZ    上市公司A    现金流量表        经营活动现金流入小计    2019-03-31    21618.81
300015_SZ    上市公司A    现金流量表        经营活动现金流入小计    2019-06-30    46396.82
300015_SZ    上市公司A    现金流量表        经营活动现金流入小计    2019-09-30    76241.97
300015_SZ    上市公司A    现金流量表        经营活动现金流入小计    2019-12-31    100051.55

使用json读取json文件为一个字典,然后用pandas转换为数据框,再用to_excel保存即可。

import json
import pandas as pd
with open('t1.json','r',encoding='utf-8') as f:
    data=json.load(f)

df=pd.DataFrame.from_records(data['E_T_DATA'])
print(df)
df.to_excel('t0228.xlsx',index=False)

如对你有帮助,请点采纳按钮~