Извлечение полей из json

"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». В приведенном выше коде я показал только одну запись. Кто-нибудь может помочь с логикой и фрагментом кода?

Мне нужны эти столбцы «bks, Ban, Out, RID и Decision» для всех 70 записей. В основном я хочу все сгладить

Anonymous_hacker 14.12.2018 09:13
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

надеюсь это поможет!! (при условии, что у вас есть 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

Да, вы почти получили это, братан, но это для 1 основной записи, а если есть 10 записей, то как ее повторить

Anonymous_hacker 14.12.2018 10:14

ты про множественные репо или de_repo или инфо ..?

iamklaus 14.12.2018 10:17

Просто используйте стандартный цикл: предположим, что у вас есть несколько записей в d, затем для i в d: repo_data = i ['Repo'] ['DE_Repo'] .... и затем продолжите вышеуказанный материал

LaSul 14.12.2018 10:19

инфо брат ... если есть 70 инфа

Anonymous_hacker 14.12.2018 10:19

он правильно выполняет итерацию более 8 записей, но внутри информации есть 70 записей, поэтому он принимает только одну запись

Anonymous_hacker 14.12.2018 10:23

ох, пожалуйста, измените значение val [0], потому что я предполагаю только одну запись .. подождите обновления, посмотрите, работает ли это ..

iamklaus 14.12.2018 10:26

Большое спасибо, брат ... результат получился, как и ожидалось.

Anonymous_hacker 14.12.2018 11:10

как отсортировать по 8 записям в фрейме данных ... он показывает 1700 строк

Anonymous_hacker 14.12.2018 11:19

зависит .. как вы хотите отображать информационные данные. (поскольку их более 70) ..?

iamklaus 14.12.2018 11:29

рассмотрим выше репо 1, а всего 8 репо

Anonymous_hacker 14.12.2018 11:44

приведенный выше код извлечет все данные для репо1 и аналогично для 8 репо, какие изменения мне нужно сделать .... так, чтобы он мог храниться во фрейме данных в 8 строках

Anonymous_hacker 14.12.2018 11:45

Кто-нибудь может сказать мне, как написать для этого метод?

Anonymous_hacker 20.12.2018 10:42

Другие вопросы по теме