Home > database >  Expand json data in a column inside dataframe
Expand json data in a column inside dataframe

Time:11-24

I know there is a way to expand the columns without extracting and joining/concatenating/appending data.

I have this json data which I've already normalized but I have a column that has a nested json: Image of issue

So what I want to do is to expand this json data in a way that adds columns automatically in the dataframe without indexing since the data inside that column doesn´t have any key to pair, so it should be by position/row only.

What could I do to unnest it? Thanks!

Update: In a previous step I've already normalized it:

response1 = requests.get(url1, params=params1, headers=headertoken)
textresponse1 = response1.text
   if "El contrato enviado no tiene envios registrados." in textresponse1:
                continue
textresponse1 = json.loads(response1.text)
response1_df = pd.json_normalize(textresponse1['envios'])
enviosdf = pd.concat([enviosdf,response1_df])

Problem is that, after this, the column 'bultos' is another json. Which when you try to normalize it, this happens:

0   {'kilos': 0.0025, 'IdDeProducto': 'ysyHhBHttHd...
1   {'kilos': 0.0025, 'IdDeProducto': 'QNEOqaNXtsi...
2   {'kilos': 0.0025, 'IdDeProducto': 'V7b3D7xaSur...

The normalization doesn't normalize it nor expands it.

CodePudding user response:

you should use explode before json_normalize because they are lists:

enviosdf=enviosdf.explode('bultos').reset_index(drop=True)
enviosdf=enviosdf.join(pd.json_normalize(enviosdf.pop('bultos')))
  • Related