【时间】2019.11.16

【题目】pandas 中 to_dict 的用法

 转自:pandas 中 to_dict 的用法

一、语法

DataFrame.to_dict(orient='dict', into=<class 'dict'>)
参数:

orient : str {‘dict’, ‘list’, ‘series’, ‘split’, ‘records’, ‘index’}

 

  • ‘dict’ (default) : {column -> {index -> value}}
  • ‘list’ :  {column -> [values]}
  • ‘series’ : {column -> Series(values)}
  • ‘split’ : {‘index’ -> [index], ‘columns’ -> [columns], ‘data’ -> [values]}
  • ‘records’ : [{column -> value}, … , {column -> value}]
  • ‘index’ : {index -> {column -> value}}

也可以用缩写表示,  s 代表 series ,sp 代表 split.

into : class, 默认dict

Returns:

dict, list 或 collections.Mapping

 

二、例子

1、orient默认为dict,返回每一列数据,字典的字典。

>>> df = pd.DataFrame({'col1': [1, 2],
...                    'col2': [0.5, 0.75]},
...                   index=['row1', 'row2'])
>>> df
      col1  col2
row1     1  0.50
row2     2  0.75
>>> df.to_dict()
{'col1': {'row1': 1, 'row2': 2}, 'col2': {'row1': 0.5, 'row2': 0.75}}

2、orient='series',返回每一列数据(<class 'pandas.core.series.Series'>),字典表示。

>>> df.to_dict('series')
{'col1': row1    1
         row2    2
Name: col1, dtype: int64,
'col2': row1    0.50
        row2    0.75
Name: col2, dtype: float64}

3、orient='split':列名称(columns)、行名称(index)、data分离

>>> df.to_dict('split')
{'index': ['row1', 'row2'], 'columns': ['col1', 'col2'],
 'data': [[1, 0.5], [2, 0.75]]}

4、orient='record':返回每一行数据(记录)的列表

>>> df.to_dict('records')
[{'col1': 1, 'col2': 0.5}, {'col1': 2, 'col2': 0.75}]

5、orient='series':在orient='record'基础上加上行index,返回每一行数据(记录)的字典

>>> df.to_dict('index')
{'row1': {'col1': 1, 'col2': 0.5}, 'row2': {'col1': 2, 'col2': 0.75}}

6、OrderedDict, defaultdict

>>> from collections import OrderedDict, defaultdict
>>> df.to_dict(into=OrderedDict)
OrderedDict([('col1', OrderedDict([('row1', 1), ('row2', 2)])),
             ('col2', OrderedDict([('row1', 0.5), ('row2', 0.75)]))])

If you want a defaultdict, you need to initialize it:

>>> dd = defaultdict(list)
>>> df.to_dict('records', into=dd)
[defaultdict(<class 'list'>, {'col1': 1, 'col2': 0.5}),
 defaultdict(<class 'list'>, {'col1': 2, 'col2': 0.75})]

 

更多推荐