Convert a Pandas DataFrame to a Dictionary

df.to_dict() can be used to convert a Pandas dataframe to a dictonary. The basic syntax is as follows. Note that,'list' does not return index.

df.to_list( orient = ‘list’ )

Sample Data

import pandas as pd
# create a dataframe called df_1
df_1 = pd.DataFrame({'Brand': ['Tesla', 'Toyota','Tesla','Ford'], 
     'Location': ['CA', 'CA','NY','MA']},index=list('abcd'))
print(df_1)
     Brand Location
a   Tesla       CA
b  Toyota       CA
c   Tesla       NY
d    Ford       MA

Method 1: orient='list'

Below is the example of using orient='list' in to_dict().

# using orient='list' in to_dict()
df_1.to_dict(orient='list')

The following is the output. As you can see, there is no index.

{'Brand': {'a': 'Tesla', 'b': 'Toyota', 'c': 'Tesla', 'd': 'Ford'},
 'Location': {'a': 'CA', 'b': 'CA', 'c': 'NY', 'd': 'MA'}}

Method 2: orient='dict'

Below is the example of using orient='dict' in to_dict().

# using orient='dict' in to_dict()
df_1.to_dict(orient='dict')
{'Brand': {'a': 'Tesla', 'b': 'Toyota', 'c': 'Tesla', 'd': 'Ford'},
 'Location': {'a': 'CA', 'b': 'CA', 'c': 'NY', 'd': 'MA'}}

Method 3: orient='series'

Below is the example of using orient='series' in to_dict().

# using orient='series' in to_dict()
df_1.to_dict(orient='series')
{'Brand': a     Tesla
 b    Toyota
 c     Tesla
 d      Ford
 Name: Brand, dtype: object,
 'Location': a    CA
 b    CA
 c    NY
 d    MA
 Name: Location, dtype: object}

Method 4: orient='split'

Below is the example of using orient='split' in to_dict(). Thus, by using orient='split', it creates dictionaries of index, column names, and data.

# using orient='split' in to_dict()
df_1.to_dict(orient='split')
{'index': ['a', 'b', 'c', 'd'],
 'columns': ['Brand', 'Location'],
 'data': [['Tesla', 'CA'], ['Toyota', 'CA'], ['Tesla', 'NY'], ['Ford', 'MA']]}

Further Reading