TacoScript
TacoScript

Reputation: 23

Transform list of dict with a list of dict into a dataframe - Python

I have an array containing dictionaries, each of these dict contains a value (an id) and a list of dictionaries.

How can I transform this into a dataframe like the example below :

Input :

[{'shopId': 65032,
  'products': [
   {'number': 'N0', 'value': 0},
   {'number': 'N1', 'value': 0},
   {'number': 'N2', 'value': 1},
   {'number': 'N3', 'value': 0}]
 },
 {'shopId': 227,
  'products': [
   {'number': 'N0', 'value': 1},
   {'number': 'N1', 'value': 0},
   {'number': 'N2', 'value': 1},
   {'number': 'N3', 'value': 1},
}]

Output: (a dataframe)

ShopID N0 N1 N2 N3
65032 0 0 1 0
227 1 0 1 1

Upvotes: 1

Views: 54

Answers (1)

ramkrishs
ramkrishs

Reputation: 78

request = [{'shopId': 65032,
     'products': [
   {'number': 'N0', 'value': 0},
   {'number': 'N1', 'value': 0},
   {'number': 'N2', 'value': 1},
   {'number': 'N3', 'value': 0}]},
   {'shopId': 227,
    'products': [
   {'number': 'N0', 'value': 1},
   {'number': 'N1', 'value': 0},
   {'number': 'N2', 'value': 1},
   {'number': 'N3', 'value': 1}]
}]

shop_df= pd.DataFrame(request) # convert to df
# Extract col and values 
col_name = [item['number'] for item in request[0]['products']] 
values = list(tuple(item['value'] for item in item["products"]) for item in request)

products_df= pd.DataFrame(values, columns= col_name)
products_df['ShopId'] = shop_df['shopId']
products_df.set_index('ShopId', inplace=True)

products_df.head()

ShopId N0   N1  N2  N3              
65032   0   0   1   0
227     1   0   1   1

Upvotes: 2

Related Questions