To convert a Pandas DataFrame to a dictionary, use the to_dict() method. By default, this method uses the DataFrame's column names as dictionary keys and creates a dictionary of index:data pairs for each column.
df.to_dict()
To obtain a list of values for each column instead of a dictionary of index:data pairs, use the orient argument. Here are the available orientations:
Consider the following DataFrame:
df = pd.DataFrame({'ID': ['p', 'q', 'r'], 'A': [1, 4, 4], 'B': [3, 3, 0], 'C': [2, 2, 9]})
To convert this DataFrame to a dictionary with 'ID' as keys and the other columns' values as lists, use the following code:
df.set_index('ID').T.to_dict('list')
This will return the following dictionary:
{'p': [1, 3, 2], 'q': [4, 3, 2], 'r': [4, 0, 9]}
Here are examples of the different orientations:
dict:
df.to_dict('dict')
Output:
{'ID': {'p': 'p', 'q': 'q', 'r': 'r'}, 'A': {0: 1, 1: 4, 2: 4}, 'B': {0: 3, 1: 3, 2: 0}, 'C': {0: 2, 1: 2, 2: 9}}
list:
df.to_dict('list')
Output:
{'ID': ['p', 'q', 'r'], 'A': [1, 4, 4], 'B': [3, 3, 0], 'C': [2, 2, 9]}
series:
df.to_dict('series')
Output:
{'ID': 0 p 1 q 2 r Name: ID, dtype: object, 'A': 0 1 1 4 2 4 Name: A, dtype: int64, 'B': 0 3 1 3 2 0 Name: B, dtype: int64, 'C': 0 2 1 2 2 9 Name: C, dtype: int64}
split:
df.to_dict('split')
Output:
{'columns': ['ID', 'A', 'B', 'C'], 'data': [['p', 1, 3, 2], ['q', 4, 3, 2], ['r', 4, 0, 9]], 'index': [0, 1, 2]}
records:
df.to_dict('records')
Output:
[{'ID': 'p', 'A': 1, 'B': 3, 'C': 2}, {'ID': 'q', 'A': 4, 'B': 3, 'C': 2}, {'ID': 'r', 'A': 4, 'B': 0, 'C': 9}]
index:
df.to_dict('index')
Output:
{0: {'ID': 'p', 'A': 1, 'B': 3, 'C': 2}, 1: {'ID': 'q', 'A': 4, 'B': 3, 'C': 2}, 2: {'ID': 'r', 'A': 4, 'B': 0, 'C': 9}}
The above is the detailed content of How to Convert a Pandas DataFrame to a Dictionary with Different Orientations?. For more information, please follow other related articles on the PHP Chinese website!