Извлечение полей из JSON - PullRequest
0 голосов
/ 14 декабря 2018
"Repo": {
    "D_Repo": {
        "fields": [
            {
                "Out": " ",
                "number": {
                    "Bks": "[number is valid]",
                    "Ban": "[VALID]"
                },
                "st_ID": 2
                "sign": "No Match"
            }
        ],
        "RID": 2546,
        "result": "OK"
    }

Я прочитал json, используя pd.read_json, а Repo - это столбец в кадре данных.Итак, как получить доступ к вложенным столбцам «bks, Ban, Out, RID и Decision» и так далее, есть 70 записей внутри «info».В приведенном выше коде я отобразил только одну запись.Кто-нибудь может помочь с логикой и фрагментом кода?

1 Ответ

0 голосов
/ 14 декабря 2018

надеюсь, это поможет !!(при условии, что d - это то, что у вас есть)

   d = {"Repo": {
        "DE_Repo": {
            "info": [
                {
                    "Out": " ",
                    "Value": {
                        "Bks": "[number is valid]",
                        "Ban": "[VALID]"
                    },
                    "ID": 2,
                    "Remark": "No Match"
                },
                {
                    "Out": " ",
                    "Value": {
                        "Bks": "[number is valid]",
                        "Ban": "[VALID]"
                    },
                    "ID": 2,
                    "Remark": "No Match"
                }
            ],
            "RID": 2546,
            "Decision": "Approved"
        }}}


repo_data = d['Repo']['DE_Repo']

values = []



 for keys, val in repo_data.items():
    if type(val) == list:
        for i in range(len(val)):
            for key,data in val[i].items():
                if type(data) == dict:
                    for subKey, subValue in data.items():
                        values.append([subKey,subValue])
                else:
                    values.append([key,data])
    else:
        values.append([keys,val])





extracted_points = pd.DataFrame(values,columns=['Key','Value'])

Вывод

           0                  1
0        Out                   
1        Bks  [number is valid]
2        Ban            [VALID]
3         ID                  2
4     Remark           No Match
5        Out                   
6        Bks  [number is valid]
7        Ban            [VALID]
8         ID                  2
9     Remark           No Match
10       RID               2546
11  Decision           Approved
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...