pandas中to_dict()方法的一点认识

pandas的版本为:0.25.1

一、问题:

如何将表格中的数据转换成字典格式,如:{a:11,b:22,....}?

解决办法有很多种,比如

可以用字典推导式:

df = pd.DataFrame(data=[11,22,33,44], index=['a','b','c','d']).rename(columns={0:'code'})`# 利用itertuples()转成字典格式{i:v for i,v in df.itertuples()}

也可以利用pandas中to_dict()进行转换:

df.T.to_dict('r')[0]

或者

df.code.to_dict()

用两种方法转换起来都不难,但是如何将下图转换成

{a:{'1':41, '2':98,'3':53},'b':{'1':15,'2':64,'3':36}}       

二、to_dict()介绍

在解决问题之前,先介绍一下pandas中的to_dict()函数,to_dict()函数有两种用法,pd.DataFrame.todict()和pd.Series.to_dict(),其中Series.to_dict()较简单

Series.to_dict(): 将Series转换成{index:value}

具体用法,可参考文章开头部分的:df.code.to_dict()

DataFrame.to_dict(orient='dict',into=')

orient: 'dict','list','series','split','records','index'

'dict':  {column->{index->values}}

                                {c1:{r0:11, r1:44, r2:77},  c2:{r0:22, r1:55, r2:88}}

'list': {column:[values]}

                                          {c1:[11, 44,77], c2:[22, 55, 88]}

'series':{column->series}

{c1: series, c2:series}

'split':{index->[index], column->[column], value->[value]}

            {index:[r0, r1, r2], column:[c1, c2], value:[11, 22, 44, 55, 77, 88]}

'record':[{column->value}] ,返回的为列表

                                [{c1:11,c2:22},{c1:44, c2:55},{c1:77, c2:88}]

'index':{index->{column->value}}  ,与"dict"类似,只不过index与column互换位置

                                {r0:{c1:11,c2:22},r1:{c1:44,c:55},r2:{c1:77,c2:88}}

三、代码

to_dict()函数介绍完了,那该如何利用to_dict()解决文章开头提到的那个问题?

完整代码:

new_df = df.set_index(['code', 'date']).unstack(level=0).droplevel(level=0, axis=1).to_dict()



欢迎批评指正

你可能感兴趣的:(pandas中to_dict()方法的一点认识)