One - One Code All

Blog Content

pandas中的dataframe.to_dict使用详解

Python 统计学-科学计算   2014-02-03 22:29:42

pandas 中的to_dict 可以对DataFrame类型的数据进行转换 

可以选择六种的转换类型,分别对应于参数 ‘dict’, ‘list’, ‘series’, ‘split’, ‘records’, ‘index’,下面逐一介绍每种的用法


Help on method to_dict in module pandas.core.frame:

to_dict(orient='dict') method of pandas.core.frame.DataFrame instance
    Convert DataFrame to dictionary.

    Parameters
    ----------
    orient : str {'dict', 'list', 'series', 'split', 'records', 'index'}
        Determines the type of the values of the dictionary.

        - 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]}
        - records : list like
          [{column -> value}, ... , {column -> value}]
        - index : dict like {index -> {column -> value}}

          .. versionadded:: 0.17.0

        Abbreviations are allowed. `s` indicates `series` and `sp`
        indicates `split`.

    Returns
    -------
    result : dict like {column -> {index -> value}}


1、选择参数orient=’dict’ 

dict也是默认的参数,下面的data数据类型为DataFrame结构, 会形成 {column -> {index -> value}}这样的结构的字典,可以看成是一种双重字典结构 

- 单独提取每列的值及其索引,然后组合成一个字典 

- 再将上述的列属性作为关键字(key),值(values)为上述的字典


查询方式为 :data_dict[key1][key2] 

- data_dict 为参数选择orient=’dict’时的数据名 

- key1 为列属性的键值(外层) 

- key2 为内层字典对应的键值


data_dict=data.to_dict(orient= 'dict')


2、当关键字orient=’ list’ 时 

和1中比较相似,只不过内层变成了一个列表,结构为{column -> [values]} 

查询方式为: data_list[keys][index]


data_list 为关键字orient=’list’ 时对应的数据名

keys 为列属性的键值,如本例中的’age’ , ‘embarked’等

index 为整型索引,从0开始到最后

data_list=data.to_dict(orient='list')


3、关键字参数orient=’series’ 

形成结构{column -> Series(values)} 

调用格式为:data_series[key1][key2]或data_dict[key1]


data_series 为数据对应的名字

key1 为列属性的键值,如本例中的’age’ , ‘embarked’等

key2 使用数据原始的索引(可选)


data_series=data.to_dict(orient='series')


4、关键字参数orient=’split’ 

形成{index -> [index], columns -> [columns], data -> [values]}的结构,是将数据、索引、属性名单独脱离出来构成字典 

调用方式有 data_split[‘index’],data_split[‘data’],data_split[‘columns’]


data_split=data.to_dict(orient='split')


5、当关键字orient=’records’ 时 

形成[{column -> value}, … , {column -> value}]的结构 

整体构成一个列表,内层是将原始数据的每行提取出来形成字典 

调用格式为data_records[index][key1]


data_records=data.to_dict(orient='records')



6、当关键字orient=’index’ 时 

形成{index -> {column -> value}}的结构,调用格式正好和’dict’ 对应的反过来,请读者自己思考


data_index=data.to_dict(orient='index')



上一篇:python中数组,矩阵,列表间的相互转换
下一篇:PANDAS 数据合并与重塑(concat篇)

The minute you think of giving up, think of the reason why you held on so long.