将JSON解析为Excel-Pandas+;xlwt

将JSON解析为Excel-Pandas+;xlwt,pandas,xlwt,Pandas,Xlwt,这个功能我已经完成了一半。但是,我需要一些帮助来格式化包含输出的工作表中的数据 我当前的代码 response = {"sic2":[{"confidence":1.0,"label":"73"}],"sic4":[{"confidence":0.5,"label":"7310"}],"sic8":[{"confidence":0.5,"label":"73101000"},{"confidence":0.25,"label":"73102000"},{"confidence":0.25,"la

这个功能我已经完成了一半。但是,我需要一些帮助来格式化包含输出的工作表中的数据

我当前的代码

response = {"sic2":[{"confidence":1.0,"label":"73"}],"sic4":[{"confidence":0.5,"label":"7310"}],"sic8":[{"confidence":0.5,"label":"73101000"},{"confidence":0.25,"label":"73102000"},{"confidence":0.25,"label":"73109999"}]}


# Create a Pandas dataframe from the data.
df = pd.DataFrame.from_dict(json.loads(response), orient='index')

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel(writer, sheet_name='Sheet1')

# Close the Pandas Excel writer and output the Excel file.
writer.save()
输出如下。。。

我想要的是这样的东西

我想首先我需要提取和组织标题。 这还包括为默认情况下不能有标题的列手动分配标题,如SIC列


之后,我可以将数据以各自的标题提供给列。

您可以循环json对象的键,并从每个键创建一个数据帧,然后使用
pd.concat
将它们组合在一起:

import json

import pandas as pd

response = '{"sic2":[{"confidence":1.0,"label":"73"}],"sic4":[{"confidence":0.5,"label":"7310"}],"sic8":[{"confidence":0.5,"label":"73101000"},{"confidence":0.25,"label":"73102000"},{"confidence":0.25,"label":"73109999"}]}'

json_data = json.loads(response)

all_frames = []
for k, v in json_data.items():
    df = pd.DataFrame(v)
    df['SIC Category'] = k
    all_frames.append(df)

final_data = pd.concat(all_frames).set_index('SIC Category')

print(final_data)
这张照片是:

              confidence     label
SIC Category                      
sic2                1.00        73
sic4                0.50      7310
sic8                0.50  73101000
sic8                0.25  73102000
sic8                0.25  73109999
您可以像以前一样通过
final\u data将其导出到Excel。导出到Excel(writer,sheet\u name='Sheet1')