Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,844 questions

51,765 answers

573 users

How to convert a list of nested dictionaries into Pandas DataFrame in Python

3 Answers

0 votes
from pandas import DataFrame
import pandas as pd 
    
dict = [ 
        { 
        "Student": [{"c++": 90, "Subject": "aaa"}, 
                    {"python": 100, "Subject": "bbb"}, 
                    {"nodejs": 95, "Subject": "ccc"}, 
                   ], 
        "Name": "Tom"
        }, 
        { 
        "Student": [{"c": 100, "Subject": "ddd"}, 
                    {"java": 90, "Subject": "eee"},
                    {"nodejs": 96, "Subject": "fff"},
                    {"c++": 95, "Subject": "aaa"},
                  ], 
        "Name": "Amelia"
        } 
       ] 
    
  
rows = [] 
    
for data in dict: 
    data_row = data['Student'] 
    nm = data['Name'] 
        
    for row in data_row: 
        row['Name']= nm 
        rows.append(row) 
    
df = pd.DataFrame(rows) 
  
print(df);
  
  
  
'''
run:
  
    c++ Subject    Name  python  nodejs      c  java
0  90.0     aaa     Tom     NaN     NaN    NaN   NaN
1   NaN     bbb     Tom   100.0     NaN    NaN   NaN
2   NaN     ccc     Tom     NaN    95.0    NaN   NaN
3   NaN     ddd  Amelia     NaN     NaN  100.0   NaN
4   NaN     eee  Amelia     NaN     NaN    NaN  90.0
5   NaN     fff  Amelia     NaN    96.0    NaN   NaN
6  95.0     aaa  Amelia     NaN     NaN    NaN   NaN
                
'''

 



answered May 14, 2020 by avibootz
edited May 14, 2020 by avibootz
0 votes
from pandas import DataFrame
import pandas as pd 
    
dict = [ 
        { 
        "Student": [{"Mark": 90, "Subject": "aaa"}, 
                    {"Mark": 100, "Subject": "bbb"}, 
                    {"Mark": 95, "Subject": "ccc"}, 
                   ], 
        "Name": "Tom"
        }, 
        { 
        "Student": [{"Mark": 100, "Subject": "ddd"}, 
                    {"Mark": 90, "Subject": "eee"},
                    {"Mark": 96, "Subject": "fff"},
                    {"Mark": 95, "Subject": "aaa"},
                  ], 
        "Name": "Amelia"
        } 
       ] 
    
  
rows = [] 
    
for data in dict: 
    data_row = data['Student'] 
    nm = data['Name'] 
        
    for row in data_row: 
        row['Name']= nm 
        rows.append(row) 
    
df = pd.DataFrame(rows) 

  
print(df);
  
  
  
'''
run:
  
   Mark Subject    Name
0    90     aaa     Tom
1   100     bbb     Tom
2    95     ccc     Tom
3   100     ddd  Amelia
4    90     eee  Amelia
5    96     fff  Amelia
6    95     aaa  Amelia
                
'''

 



answered May 14, 2020 by avibootz
0 votes
from pandas import DataFrame
import pandas as pd 
    
dict = [ 
        { 
        "Student": [{"Mark": 90, "Subject": "aaa"}, 
                    {"Mark": 100, "Subject": "bbb"}, 
                    {"Mark": 95, "Subject": "ccc"}, 
                   ], 
        "Name": "Tom"
        }, 
        { 
        "Student": [{"Mark": 100, "Subject": "aaa"}, 
                    {"Mark": 90, "Subject": "bbb"},
                    {"Mark": 96, "Subject": "ccc"},
                    {"Mark": 95, "Subject": "fff"},
                  ], 
        "Name": "Amelia"
        } 
       ] 
    
  
rows = [] 
    
for data in dict: 
    data_row = data['Student'] 
    nm = data['Name'] 
        
    for row in data_row: 
        row['Name']= nm 
        rows.append(row) 
    
df = pd.DataFrame(rows) 

df = df.pivot_table(index ='Name', columns =['Subject'], values =['Mark']).reset_index() 
df.columns =['Name', 'c++', 'python', 'nodejs', 'php'] 
  
print(df);
  
  
  
'''
run:
  
     Name    c++  python  nodejs   php
0  Amelia  100.0    90.0    96.0  95.0
1     Tom   90.0   100.0    95.0   NaN
                
'''

 



answered May 14, 2020 by avibootz

Related questions

...