Horje
How To Convert Pandas Dataframe To Nested Dictionary

In this article, we will learn how to convert Pandas DataFrame to Nested Dictionary.

Convert Pandas Dataframe To Nested Dictionary

Converting a Pandas DataFrame to a nested dictionary involves organizing the data in a hierarchical structure based on specific columns. In Python’s Pandas library, we can utilize the groupby function along with apply to create groupings based on chosen columns.

Let’s create a DataFrame that contains information about different products, including their names, prices, and stock quantities. The to_dict method with the parameter orient=records is commonly employed to convert each group into a dictionary of records. Let’s see how to convert dataframe to nested dictionary:

Using to_dict

Python3

import pandas as pd
 
# Your DataFrame
data = {'Name': ['Emily', 'David', 'Emily', 'David'],
        'Chain': ['Panera Bread', 'Starbucks', 'Subway', 'Chick-fil-A'],
        'Food': ['soup', 'coffee', 'sandwich', 'grilled chicken'],
        'Healthy': [True, False, True, True]}
 
df = pd.DataFrame(data)
 
# Convert DataFrame to nested dictionary
nested_dict = df.groupby('Name').apply(lambda x: x[['Chain', 'Food', 'Healthy']].to_dict(orient='records')).to_dict()
 
print(nested_dict)

Output:

{'David': [{'Chain': 'Starbucks', 'Food': 'coffee', 'Healthy': False}, 
{'Chain': 'Chick-fil-A', 'Food': 'grilled chicken', 'Healthy': True}],
'Emily': [{'Chain': 'Panera Bread', 'Food': 'soup', 'Healthy': True},
{'Chain': 'Subway', 'Food': 'sandwich', 'Healthy': True}]}

Let’s see another complex example, to gain in-depth understanding.

Python3

import pandas as pd
data = {'Person': ['Alice', 'Bob', 'Alice', 'Bob'],
                'Location': ['Home', 'Work', 'Home', 'Work'],
                'Activity': ['Cooking', 'Meeting', 'Reading', 'Working'],
                'Duration': [30, 60, 45, 120]}
 
df = pd.DataFrame(data)
nested_dict_another = df.groupby(['Person', 'Location']).apply(lambda x: x[['Activity', 'Duration']].to_dict(orient='records')).to_dict()
print(nested_dict_another)

Output:

{('Alice', 'Home'): [{'Activity': 'Cooking', 'Duration': 30}, {'Activity': 'Reading', 'Duration': 45}], 
('Bob', 'Work'): [{'Activity': 'Meeting', 'Duration': 60}, {'Activity': 'Working', 'Duration': 120}]}

Conclusion

Hence, we can convert Pandas Dataframe To Nested Dictionary with just few lines of code.




Reffered: https://www.geeksforgeeks.org


Pandas

Related
How To Load Csv File In Jupyter Notebook? How To Load Csv File In Jupyter Notebook?
How to Convert float64 Columns to int64 in Pandas? How to Convert float64 Columns to int64 in Pandas?
Change String To Date In Pandas Dataframe Change String To Date In Pandas Dataframe
Convert Bytes To a Pandas Dataframe Convert Bytes To a Pandas Dataframe
How to Change Pandas Dataframe Datetime to Time How to Change Pandas Dataframe Datetime to Time

Type:
Geek
Category:
Coding
Sub Category:
Tutorial
Uploaded by:
Admin
Views:
14