Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parse a structured dictionary of entries into a prettified Excel sheet

I have this python dictionary and I want to write this data to an Excel file.

NOTE: there are many categories and each category has many cars (I used 2 categories for simplicity)

data = {"Category": {"Diesel" : [{
                                "Name": "Land Rover", 
                                "Description":"No Description Found", 
                                "Price": "£ x" }],

                     "Electric" : [{"Name": "Tesla Model X", 
                                  "Description":"No Description Found", 
                                  "Price": "£ x" }]
                    }               
        }

Desired output:

Category Name Description Price
Diesel
Land Rover No Description Found £ x
Electric
Tesla Model X No Description Found £ x
like image 799
VeraCode Avatar asked Dec 19 '25 21:12

VeraCode


1 Answers

TL;DR - the best solution is in the end.

The most straightforward way would be to go over your data and append rows one by one:

df = pd.DataFrame(columns=['Category',  'Name', 'Description',  'Price'])
i = 0
for category, cars in data['Category'].items():
  df.loc[i, 'Category'] = category
  i += 1
  for car in cars:
    df.loc[i, ['Name',  'Description',  'Price']] = car
    i += 1

In the end, your data frame should look like:

   Category           Name           Description Price
0    Diesel            NaN                   NaN   NaN
1       NaN     Land Rover  No Description Found   £ x
2  Electric            NaN                   NaN   NaN
3       NaN  Tesla Model X  No Description Found   £ x

Finally, just write this data frame to disk as an Excel file:

df.to_excel(...)

By default, NaN cells will be empty in the Excel file, which is what you have in your example.

However, you can avoid loops and counters altogether by going for a pure pandas solution:

pd.concat(
    df
    for category, cars in data['Category'].items()
    for df in (pd.DataFrame({'Category': [category]}), pd.DataFrame(cars)))
like image 122
rudolfovic Avatar answered Dec 22 '25 11:12

rudolfovic



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!