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 |
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)))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With