将df转为字典时的用法
- 以下基于windows10, python3.6环境通过验证
In [1]: import pandas as pd
In [2]: import numpy as np
In [3]: df = pd.DataFrame({'colA' : list('AABCA'), 'colB' : ['X',np.nan,'Ya','Xb','Xa'],'colC' : [100,50,30,5
...: 0,20], 'colD': [90,60,60,80,50]})
In [4]: df
Out[4]:
colA colB colC colD
0 A X 100 90
1 A NaN 50 60
2 B Ya 30 60
3 C Xb 50 80
4 A Xa 20 50
In [5]: df.to_dict(orient='dict')
Out[5]:
{'colA': {0: 'A', 1: 'A', 2: 'B', 3: 'C', 4: 'A'},
'colB': {0: 'X', 1: nan, 2: 'Ya', 3: 'Xb', 4: 'Xa'},
'colC': {0: 100, 1: 50, 2: 30, 3: 50, 4: 20},
'colD': {0: 90, 1: 60, 2: 60, 3: 80, 4: 50}}
In [6]: df.to_dict(orient='list')
Out[6]:
{'colA': ['A', 'A', 'B', 'C', 'A'],
'colB': ['X', nan, 'Ya', 'Xb', 'Xa'],
'colC': [100, 50, 30, 50, 20],
'colD': [90, 60, 60, 80, 50]
In [7]: df.to_dict(orient='series')
Out[7]:
{'colA': 0 A
1 A
2 B
3 C
4 A
Name: colA, dtype: object, 'colB': 0 X
1 NaN
2 Ya
3 Xb
4 Xa
Name: colB, dtype: object, 'colC': 0 100
1 50
2 30
3 50
4 20
Name: colC, dtype: int64, 'colD': 0 90
1 60
2 60
3 80
4 50
Name: colD, dtype: int64}
In [8]: df.to_dict(orient='split')
Out[8]:
{'columns': ['colA', 'colB', 'colC', 'colD'],
'data': [['A', 'X', 100, 90],
['A', nan, 50, 60],
['B', 'Ya', 30, 60],
['C', 'Xb', 50, 80],
['A', 'Xa', 20, 50]],
'index': [0, 1, 2, 3, 4]}
In [9]: df.to_dict(orient='records')
Out[9]:
[{'colA': 'A', 'colB': 'X', 'colC': 100, 'colD': 90},
{'colA': 'A', 'colB': nan, 'colC': 50, 'colD': 60},
{'colA': 'B', 'colB': 'Ya', 'colC': 30, 'colD': 60},
{'colA': 'C', 'colB': 'Xb', 'colC': 50, 'colD': 80},
{'colA': 'A', 'colB': 'Xa', 'colC': 20, 'colD': 50}]
In [10]: df.to_dict(orient='index')
Out[10]:
{0: {'colA': 'A', 'colB': 'X', 'colC': 100, 'colD': 90},
1: {'colA': 'A', 'colB': nan, 'colC': 50, 'colD': 60},
2: {'colA': 'B', 'colB': 'Ya', 'colC': 30, 'colD': 60},
3: {'colA': 'C', 'colB': 'Xb', 'colC': 50, 'colD': 80},
4: {'colA': 'A', 'colB': 'Xa', 'colC': 20, 'colD': 50}}