第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

flatten_json 列表的遞歸展平函數(shù)

flatten_json 列表的遞歸展平函數(shù)

慕娘9325324 2022-10-11 21:39:17
我想在每個(gè)級(jí)別展平以下 JSON 并為每個(gè)級(jí)別創(chuàng)建一個(gè) pandas 數(shù)據(jù)框,flatten_json我曾經(jīng)這樣做過(guò),但為此我需要遍歷每個(gè)級(jí)別,從而創(chuàng)建多個(gè)嵌套的 for 循環(huán):{"metadata": {    "name": "abc",    "time": "2020-04-01"},"data": [    {        "identifiers": [            {                "type": "abc",                "scheme": "def",                "value": "123"            },            {                "type": "abc",                "scheme": "def",                "value": "123"            }        ],        "name": "qwer",        "type": "abd",        "level1": [            {                "identifiers": [                    {                        "type": "abc",                        "scheme": "def",                        "value": "123"                    },                    {                        "type": "abc",                        "scheme": "def",                        "value": "123"                    }                ],                "name": "asd",                "type": "abd",                "level2": [                    {                        "identifiers": [                            {                                "type": "abc",                                "scheme": "def",                                "value": "123"                            },                            {                                "type": "abc",                                "scheme": "def",                                "value": "123"                            }                        ],                        "name": "abs",                        "type": "abd"                    },         
查看完整描述

1 回答

?
收到一只叮咚

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊

我使用遞歸解決了它,這是我的代碼:


import json

import pandas as pd

import flatten_json as fj


keys = {'data', 'level1', 'level2', 'level3'}

with open('test_lh.json') as f:

    data = json.load(f)


levels = ['data.level1.level2.level3', 'data.level1.level2', 'data.level1', 'data']

recs_dict = {}


def do_step(data_dict, level, depth, path):

    recs = []

    for x in data_dict[level]:

        if depth < len(path.split('.'))-1:

            do_step(x, path.split('.')[depth+1], depth+1, path)

        else:

            dic = fj.flatten(x, root_keys_to_ignore=keys)

            recs.append(dic)

    recs_dict[level] = recs


for path in levels:

    do_step(data, path.split('.')[0], 0, path)


for key, value in recs_dict.items():

    print(key)

    df = pd.DataFrame(recs_dict[key])

    print(df)

這是輸出:


level3

  identifiers_0_type identifiers_0_scheme identifiers_0_value identifiers_1_type identifiers_1_scheme identifiers_1_value name    type

0                abc                  def                 123                abc                  def                 123  abs  level3

1                abc                  def                 123                abc                  def                 123  abs  level3

level2

  identifiers_0_type identifiers_0_scheme identifiers_0_value identifiers_1_type identifiers_1_scheme identifiers_1_value name    type

0                abc                  def                 123                abc                  def                 123  abs  level2

1                abc                  def                 123                abc                  def                 123  abs     abd

level1

  identifiers_0_type identifiers_0_scheme identifiers_0_value identifiers_1_type identifiers_1_scheme identifiers_1_value name    type

0                abc                  def                 123                abc                  def                 123  asd  level1

data

  identifiers_0_type identifiers_0_scheme identifiers_0_value identifiers_1_type identifiers_1_scheme identifiers_1_value  name type

0                abc                  def                 123                abc                  def                 123  qwer  abd



查看完整回答
反對(duì) 回復(fù) 2022-10-11
  • 1 回答
  • 0 關(guān)注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)