一维格式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_code | com_name | fr_name | fr_item_flag | fr_item | 2019-03-31 | 2019-06-30 | 2019-09-30 | 2019-12-31 |
---|---|---|---|---|---|---|---|---|
300015SZ | 上市公司A | 现金流量表 | null | 销售商品、提供劳务收到的现金 | 2019-03-31 | 2019-06-30 | 2019-09-30 | 2019-12-31 |
300015SZ | 上市公司A | 现金流量表 | null | 经营活动现金流入小计 | 2019-03-31 | 2019-06-30 | 2019-09-30 | 2019-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)
如对你有帮助,请点采纳按钮~