Свести JSON в одну строку, используя Pandas и json_normalize - PullRequest
0 голосов
/ 19 января 2019

У меня сложный контент JSON с высокой степенью вложенности:

 {
      "EligibilityCriteriaTerms": {
        "InclusionCriteria": {
          "Inclusion": [
            {
              "@disease": "Vaccine",
              "@id": "11111",
              "Criterion": "Subjects",
              "SubCriteria": {
                "SubCriterion": [
                  {
                    "@disease": "disease",
                    "@id": "8888",
                    "$": "Subjects with Prior DTP Vaccination"
                  },
                  {
                    "@disease": "DTP Vaccine",
                    "@id": "8888",
                    "$": "Subjects with Prior Other Vaccination"
                  }
                ]
              }
            },
            {
              "@disease": "Vaccine",
              "@id": "88888",
              "Criterion": "Subjects with Normal/Adequate  Status",
              "SubCriteria": {
                "SubCriterion": {
                  "@disease": " Vaccine",
                  "@id": "777777",
                  "$": "Subjects"
                }
              }
            }
          ]
        },
        "ExclusionCriteria": {
          "Exclusion": [
            {
              "@disease": " Vaccine",
              "@id": "666666",
              "Criterion": "Subjects for other indication"
            },
            {
              "@disease": " Vaccine",
              "@id": "55555",
              "Criterion": "SubjectsIngredients"
            },
            {
              "@disease": "Vaccine",
              "@id": "8334",
              "Criterion": "Subjects",
              "SubCriteria": {
                "SubCriterion": [
                  {
                    "@disease": "DTP Vaccine",
                    "@id": "333",
                    "$": " immune dysfunction"
                  },
                  {
                    "@disease": "DTP Vaccine",
                    "@id": "444",
                    "$": "Subjects disease/disorder"
                  }
                ]
              }
            }
          ]
        }
      }
    }

Я пытаюсь полностью сгладить этот объект JSON.Когда я использую следующий код:

pd_1=json_normalize(json_content_eligibility_citeria_terms['EligibilityCriteriaTerms'],record_path=[['ExclusionCriteria','Exclusion']],errors='ignore')
pd_1_eligibility_citeria_terms=pd_1_eligibility_citeria_terms.fillna('')
test2=pd.DataFrame.from_records(pd_1_eligibility_citeria_terms.SubCriteria) 
test2.columns=['@disease','@id','$']   # This line throws an error  ValueError: Length mismatch: Expected axis has 1 elements, new values have 3 elements    

Есть ли способ извлечь значения в data2-кадры test2 и выполнить конкатенацию с pd_1 и отобразить результаты в одной строке

Я видел несколько способовиспользования json_normalize () и использования параметров в атрибутах meta [], но эта структура не работает с мета-атрибутами, я пропускаю какие-либо настройки.Это правильный подход?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...