I try to convert a JSON file into a DataFrame with Pandas. I use pd.json_normalize with meta but I have again in my DataFrame a dictionary nested. Maybe I can't use pd.json_normalize, do you have some idea? Maybe I must flat the data before to use Pandas.
request_json_decoding =\
{'_typ': 'Index',
'assetClass': 'EQUITY',
'basket': {'basketDate': '2020-12-02T00:00:00.000+0100',
'constituents': [{'asset': {'_typ': 'Asset',
'allAnalytics': [{'marketCap': 2889054400}],
'assetClass': 'EQUITY',
'ccy': 'EUR',
'exposureCtry': 'DEU',
'id': {'code': '2603021'},
'moreIds': [{'codScheme': 'ISIN',
'code': 'DE000A2GS5D8'},
{'codScheme': 'SEDOL',
'code': 'BFYTTC2'},
{'codScheme': 'INST_NUM',
'code': '5679589'}],
'name': 'DERMAPHARM HOLDING SE',
'sectors': [{'code': '551',
'type': 'HSBC'},
{'code': '4577',
'type': 'ICB'}]},
'exchRate': {'rate': 1.2077999235945769},
'factor': 1,
'price': 53.66,
'weight': 0.0008423553691237516},
{'asset': {'_typ': 'Asset',
'allAnalytics': [{'marketCap': 396594792}],
'assetClass': 'EQUITY',
'ccy': 'EUR',
'exposureCtry': 'DEU',
'id': {'code': '1506422'},
'moreIds': [{'codScheme': 'ISIN',
'code': 'DE0007193500'},
{'codScheme': 'SEDOL',
'code': '5558203'},
{'codScheme': 'INST_NUM',
'code': '1050870'}],
'name': 'KOENIG & BAUER AG',
'sectors': [{'code': '331',
'type': 'HSBC'},
{'code': '2757',
'type': 'ICB'}]},
'exchRate': {'rate': 1.2077999235945769},
'factor': 1,
'price': 24,
'weight': 0.000280826220184372},
{'asset': {'_typ': 'Asset',
'allAnalytics': [{'marketCap': 963572493.252}],
'assetClass': 'EQUITY',
'ccy': 'GBP',
'exposureCtry': 'GBR',
'id': {'code': '634295'},
'moreIds': [{'codScheme': 'ISIN',
'code': 'GB00B0744359'},
{'codScheme': 'SEDOL',
'code': 'B074435'},
{'codScheme': 'INST_NUM',
'code': '1388802'}],
'name': 'ESSENTRA PLC',
'sectors': [{'code': '211',
'type': 'HSBC'},
{'code': '2797',
'type': 'ICB'}]},
'exchRate': {'rate': 1.3325000766187542},
'factor': 1,
'price': 3.194,
'weight': 0.0008855804882485151}]},
'ccy': 'USD',
'id': {'code': '33', 'source': 'INDICE'},
'indexFreq': 'NONE',
'indexType': 'COMPOSITE',
'name': 'MSCI EUROPE (16) SMALL CAP',
'pricingSourceType': 'NF',
'sourceId': {'code': '106233', 'source': 'CODESF'}}
df = pd.json_normalize(request_json_decoding, ['basket', ['constituents']])
Output :
factor price weight asset._typ asset.allAnalytics asset.assetClass asset.ccy asset.exposureCtry asset.id.code asset.moreIds asset.name asset.sectors exchRate.rate
0 1 53.660 0.000842 Asset [{'marketCap': 2889054400}] EQUITY EUR DEU 2603021 [{'codScheme': 'ISIN', 'code': 'DE000A2GS5D8'}, {'codScheme': 'SEDOL', 'code': 'BFYTTC2'}, {'codScheme': 'INST_NUM', 'code': '5679589'}] DERMAPHARM HOLDING SE [{'code': '551', 'type': 'HSBC'}, {'code': '4577', 'type': 'ICB'}] 1.2078
1 1 24.000 0.000281 Asset [{'marketCap': 396594792}] EQUITY EUR DEU 1506422 [{'codScheme': 'ISIN', 'code': 'DE0007193500'}, {'codScheme': 'SEDOL', 'code': '5558203'}, {'codScheme': 'INST_NUM', 'code': '1050870'}] KOENIG & BAUER AG [{'code': '331', 'type': 'HSBC'}, {'code': '2757', 'type': 'ICB'}] 1.2078
2 1 3.194 0.000886 Asset [{'marketCap': 963572493.252}] EQUITY GBP GBR 634295 [{'codScheme': 'ISIN', 'code': 'GB00B0744359'}, {'codScheme': 'SEDOL', 'code': 'B074435'}, {'codScheme': 'INST_NUM', 'code': '1388802'}] ESSENTRA PLC [{'code': '211', 'type': 'HSBC'}, {'code': '2797', 'type': 'ICB'}] 1.3325