【问题标题】:JSON to Python Dataframe convert [duplicate]JSON到Python数据框转换[重复]
【发布时间】:2019-09-12 05:36:33
【问题描述】:

我需要帮助~

有一个 json 数据(示例如下)。我正在尝试使用 Python 创建一个数据框。 JSON:

我想保存到excel。

谢谢!

data = {'2': {'groupNo': '29',
        'korea': '1',
        'makeName': 'hyundai',
        'makerCnt': None,
        'makerNo': '49',
        'model': [{'car_cnt': None,
                   'depth': 2,
                   'm_img': None,
                   'name': 'avante (15~19year)',
                   'no': '908',
                   'relDay': '00000000',
                   'sort': 143}],
        'name': 'avante'},
 '4': {'groupNo': '30',
        'korea': '1',
        'makeName': 'hyundai',
        'makerCnt': None,
        'makerNo': '49',
        'model': [{'car_cnt': '16',
                   'depth': 2,
                   'm_img': None,
                   'name': 'genesis (15~19year)',
                   'no': '1463',
                   'relDay': 20150827,
                   'sort': 95},
                  {'car_cnt': '50',
                   'depth': 2,
                   'm_img': None,
                   'name': 'genesis (12~15year)',
                   'no': '1012',
                   'relDay': 20081000,
                   'sort': 96},
                  {'car_cnt': '82',
                   'depth': 2,
                   'm_img': None,
                   'name': 'genesis (10~12year)',
                   'no': '1589',
                   'relDay': 20150101,
                   'sort': 97},
                  {'car_cnt': '67',
                   'depth': 2,
                   'm_img': None,
                   'name': 'genesis (08~10year)',
                   'no': '933',
                   'relDay': 20080100,
                   'sort': 98}],
        'name': 'genesis'}

}

pd.DataFrame(data) 不起作用

如何将此 json 数据转换为如下示例的数据框?

id  groupNO korea   makeName    name    model
2   29  1   hyundai avante  avante (15~19year)
4   30  1   hyundai genesis genesis (15~19year)
4   30  1   hyundai genesis genesis (12~15year)
4   30  1   hyundai genesis genesis (10~12year)

谢谢!

【问题讨论】:

    标签: python json dataframe


    【解决方案1】:

    代码结果是你想要的键

    def get_decode_dict(data,needKey):
        out_value=None
        #print(needKey)
        for key, value in data.items():
            if key==needKey:
                return value
            elif isinstance(value, dict):
                out_value = get_decode_dict(value,needKey)
            elif out_value!=None:
                return out_value
        return out_value
    
    def get_decode_list(data,needKey):
        value=None
        for item in data:
            if isinstance(item, dict):
                value = get_decode_dict(item,needKey)
            elif value!=None:
                return value            
        return value
    def main():
       data={'2'{}}    #you data dict  
       for key,value in data.items(): 
            print("id: "+key)
            print("groupNo: "+get_decode_dict(value,"groupNo"))
            print("korea: "+get_decode_dict(value,"korea"))
            print("makeName: "+get_decode_dict(value,"makeName"))
            print("name: "+get_decode_dict(value,"name"))
            model=get_decode_dict(value,"model")
            print("model: "+get_decode_list(model,"name"))
    main()
    

    【讨论】:

    • 谢谢!不起作用错误:期望用双引号括起来的属性名称:第1行第2列(字符1)此数据是要通过抓取导入的数据,因此没有文件。我想知道如何处理数据而不是文件。
    • 是的,我误解了你的问题,所以数据本来是一个字典,应该更容易。
    • 我已经更新了代码
    • 哦~谢谢!输出: id: 2 groupNo: 29 korea: 1 makeName: 现代名称: avante model: avante (15~19year) id: 4 groupNo: 30 korea: 1 makeName: 现代名称: genesis model: genesis (08~10year) 但是'模型'只有一个
    • 我希望这个 cwaling json 数据将被转换为 Dataframe。我想将其保存为 Excel 文件。
    猜你喜欢
    • 2020-12-02
    • 2023-03-27
    • 2021-12-22
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2019-02-12
    • 2017-10-31
    • 1970-01-01
    相关资源
    最近更新 更多