> ## Content Index
> Fetch the complete content index at: https://datascientyst.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# How to Convert Pandas DataFrame to Dictionary
- URL: https://datascientyst.com/convert-a-pandas-dataframe-to-a-dictionary/
- Published: 2022-10-19T15:37:28.000Z
- Updated: 2022-10-19T15:37:28.000Z
- Author: John D K
- Tags: to_dict()

In this short guide, I'll show you how to **convert Pandas DataFrame to dictionary**. You can also find how to use Pandas method - `to_dict()`. So at the end you will get from **DataFrame to Python dict**:

|   | day | numeric |
| - | --- | ------- |
| 0 | 1   | 1       |
| 1 | 2   | 2       |
| 2 | 3   | 3       |
| 3 | 4   | 4       |
| 4 | 5   | 5       |

to:

```
{'day': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6},
'numeric': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6}}

```

or any other dict-like format. We will also cover the following examples:

- `dict` (default) : dict like {column -> {index -> value}}
- `list` : dict like {column -> \[values\]}
- `series` : dict like {column -> Series(values)}
- `split` : dict like - `{'index' -> [index], 'columns' -> [columns], 'data' -> [values]}`
- `tight` : dict like  
`{'index' -> [index], 'columns' -> [columns], 'data' -> [values], 'index_names' -> [index.names], 'column_names' -> [column.names]}`
- `records` : list like - `[{column -> value}, ... , {column -> value}]`
- `index` : dict like {index -> {column -> value}}

To start, here is the syntax that you may apply in order to convert DataFrame to dict:

```python
df.to_dict()

```

In the next section, I'll review the steps to apply the above syntax in practice.

## Step 1: Create a DataFrame

Lets create a DataFrame which has a two columns:

```python
import pandas as pd

data={'day': [1, 2, 3, 4, 5, 6],
     'numeric': [1, 2, 3, 4, 5, 6]}

df = pd.DataFrame(data)
df

```

result:

|   | day | numeric |
| - | --- | ------- |
| 0 | 1   | 1       |
| 1 | 2   | 2       |
| 2 | 3   | 3       |
| 3 | 4   | 4       |
| 4 | 5   | 5       |

## Step 2: DataFrame to dict - {column -> {index -> value}}

In order to extract DataFrame as Python dictionary we need just this line:

```python
df.to_dict()

```

result:

```
{'day': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6},
'numeric': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6}}

```

By default method `to_dict()` use as parameter - `orient='list'` and will produce dict form of:

```
{column -> {index -> value}}

```

## Step 3: DataFrame to dict - list - {column -> \[values\]}

What if you like to get a dictionary only with the values? In this case we will use `orient='list'` in order to exclude index from the output dictionary:

```python
df.to_dict(orient='list')

```

```
{'day': [1, 2, 3, 4, 5, 6], 'numeric': [1, 2, 3, 4, 5, 6]}

```

Note: have in mind that there is a difference between Python dict and JSON format.

## Step 3: split - {'index' -> \[index\], 'columns' -> \[columns\], 'data' -> \[values\]}

Another form of dictionary which includes:

- index
- columns
- data

as separate lists can be extracted by:

```python
df.to_dict(orient='split')

```

```
{'index': [0, 1, 2, 3, 4, 5],
 'columns': ['day', 'numeric'],
 'data': [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6]]}

```

and then:

```python
df['yyyy'].astype(str) + '-'+ df['mm'].astype(str)

```

## Step 4: Convert DataFrame to dict - tight format

If you like to get a tight format of DataFrame as dict we can use the parameter `orient='tight'`.

This option includes the label names - index and column names in the output dict:

```python
df.to_dict(orient='tight')

```

to get:

{'index': \[0, 1, 2, 3, 4, 5\],  
'columns': \['day', 'numeric'\],  
'data': \[\[1, 1\], \[2, 2\], \[3, 3\], \[4, 4\], \[5, 5\], \[6, 6\]\],  
'index\_names': \[None\],  
'column\_names': \[None\]}

## Step 5: Convert DataFrame to dict - records

If we like to extract only the values and the column labels as dictionary we can do it by - `orient='records'`:

```python
df.to_dict(orient='records')

```

We will get the list of dicts from the original DataFrame:

```
[{'day': 1, 'numeric': 1},
 {'day': 2, 'numeric': 2},
 {'day': 3, 'numeric': 3},
 {'day': 4, 'numeric': 4},
 {'day': 5, 'numeric': 5},
 {'day': 6, 'numeric': 6}]

```

## Step 6: Convert DataFrame to dict - index

Finally we can convert DataFrame to dictionary with index by:

```python
df.to_dict(orient='index')

```

result:

```
{0: {'day': 1, 'numeric': 1},
 1: {'day': 2, 'numeric': 2},
 2: {'day': 3, 'numeric': 3},
 3: {'day': 4, 'numeric': 4},
 4: {'day': 5, 'numeric': 5},
 5: {'day': 6, 'numeric': 6}}

```

More information about method - [to\_dict](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to%5Fdict.html?ref=datascientyst.com)

![](https://datascientyst.com/content/images/2022/10/convert-a-pandas-dataframe-to-a-dictionary.png)