У меня сложный контент 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 [], но эта структура не работает с мета-атрибутами, я пропускаю какие-либо настройки.Это правильный подход?