Pandas 基本使用(三) — DataFrame.to_dict() 函数基本使用:

Pandas 处理数据的基本类型为 DataFrame,数据清洗时不可必然会关系到数据类型转化问题,Pandas 在这方面也做的也非常不错,其中经常用的是 DataFrame.to_dict() 函数之间转化为字典类型;除了转化为字典之外,Pandas 还提供向 jsonhtmllatexcsv等格式的转换:

to_dict() 函数基本语法

DataFrame.to_dict (self, orient='dict', into=) --- 官方文档

函数种只需要填写一个参数:orient 即可 ,但对于写入orient的不同,字典的构造方式也不同,官网一共给出了6种,并且其中一种是列表类型:

  • orient ='dict',是函数默认的,转化后的字典形式:{column(列名) : {index(行名) : value(值) )}};
  • orient ='list' ,转化后的字典形式:{column(列名) :{[ values ](值)}};
  • orient ='series' ,转化后的字典形式:{column(列名) : Series (values) (值)};
  • orient ='split' ,转化后的字典形式:{'index' : [index],‘columns' :[columns],’data‘ : [values]};
  • orient ='records' ,转化后是 list形式:[{column(列名) : value(值)}......{column:value}];
  • orient ='index' ,转化后的字典形式:{index(值) : {column(列名) : value(值)}};

备注:

1,上面中 value 代表数据表中的值,column表示列名,index 表示行名,如下图所示:

2,{ }表示字典数据类型,字典中的数据是以 {key : value} 的形式显示,是键名和键值一一对应形成的。

2,关于6种构造方式进行代码实例

六种构造方式所处理 DataFrame 数据是统一的,如下:

>>> import pandas as pd
>>> df =pd.DataFrame({'col_1':[1,2],'col_2':[0.5,0.75]},index =['row1','row2'])
>>> dfcol_1  col_2
row1      1   0.50
row2      2   0.75

2.1,orient ='dict' — {column(列名) : {index(行名) : value(值) )}}

to_dict('list') 时,构造好的字典形式:{第一列的列名:{第一行的行名:value值,第二行行名,value值},....};

>>> dfcol_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('dict')
{'col_1': {'row1': 1, 'row2': 2}, 'col_2': {'row1': 0.5, 'row2': 0.75}}

orient = 'dict 可以很方面得到 在某一列对应的行名与各值之间的字典数据类型,例如在源数据上面我想得到在col_1这一列行名与各值之间的字典,直接在生成字典查询列名为col_1

>>> dfcol_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('dict')['col_1']
{'row1': 1, 'row2': 2}

2.2,orient ='list' — {column(列名) :{[ values ](值)}};

生成字典中 key为各列名,value为各列对应值的列表

>>> dfcol_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('list')
{'col_1': [1, 2], 'col_2': [0.5, 0.75]}

orient = 'list' 时,可以很方面得到 在某一列 各值所生成的列表集合,例如我想得到col_2 对应值得列表:

>>> dfcol_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('list')['col_2']
[0.5, 0.75]

2.3,orient ='series' — {column(列名) : Series (values) (值)};

orient ='series'orient = 'list' 唯一区别就是,这里的 valueSeries数据类型,而前者为列表类型

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

2.4,orient ='split' — {'index' : [index],‘columns' :[columns],’data‘ : [values]};

orient ='split' 得到三个键值对,列名、行名、值各一个,value统一都是列表形式;

>>> dfcol_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('split')
{'index': ['row1', 'row2'], 'columns': ['col_1', 'col_2'], 'data': [[1, 0.5], [2, 0.75]]}

orient = 'split' 可以很方面得到 DataFrame数据表 中全部 列名或者行名 的列表形式,例如我想得到全部列名:

>>> dfcol_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('split')['columns']
['col_1', 'col_2']

2.5,orient ='records' — [{column:value(值)},{column:value}....{column:value}];

注意的是,orient ='records' 返回的数据类型不是 dict ; 而是list 列表形式,由全部列名与每一行的值形成一一对应的映射关系:

>>> dfcol_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('records')
[{'col_1': 1, 'col_2': 0.5}, {'col_1': 2, 'col_2': 0.75}]

这个构造方式的好处就是,很容易得到 列名与某一行值形成得字典数据;例如我想要第2行{column:value}得数据:

>>> dfcol_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('records')[1]
{'col_1': 2, 'col_2': 0.75}

2.6,orient ='index' — {index:{culumn:value}};

orient ='index'2.1用法刚好相反,求某一行中列名与值之间一一对应关系(查询效果与2.5相似):

>>> dfcol_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.to_dict('index')
{'row1': {'col_1': 1, 'col_2': 0.5}, 'row2': {'col_1': 2, 'col_2': 0.75}}
​
#查询行名为 row2 列名与值一一对应字典数据类型
>>> df.to_dict('index')['row2']
{'col_1': 2, 'col_2': 0.75}

3,to_dict() 函数其它用法

在部分 2 只展示了这个函数的一部分功能,还有其他用法,例如可以快速索引第几行第几列的值(pandas内置索引函数),例如我想要第二行第二列的值,可以这样操作:

#to_dict 版本的:
>>> dfcol_1  col_2
row1      1   0.50
row2      2   0.75
>>> dict_1 = df.to_dict('index')
>>> dict_2 = dict_1[list(dict_1.keys()[1])]
>>> dict_2[list(dict_2.keys())[1]]
0.75
​
​
# pandas自带的
>>> dfcol_1  col_2
row1      1   0.50
row2      2   0.75
>>> df.iloc[1,1]
0.75

相对会麻烦点,但重要的是整个实现过程;最后,感谢阅读!

oracle自带split函数_Pandas 基本使用(三) — DataFrame.to_dict() 函数基本使用相关推荐

  1. plsql 为空显示 0 的函数_记住这三个检测函数,彻底清除公式当中的0值

    一.检测单元格是否为空 在做一些表格计算的时候,我们需要下拉公式,但公式下拉之后会有很多0产生,如果我们不需要这个0,我们可以用ISBLANK函数,根据检测前面的关键单元格是否是空的,然后再用IF函数 ...

  2. python apply函数的用法_Python pandas.DataFrame.apply函数方法的使用

    DataFrame.apply(func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, args=(), **k ...

  3. matlab贝塞尔函数重积分,第三章 贝塞尔函数 柱函数.pdf

    第十四章 贝塞尔函数 柱函数 贝塞 尔函数(也称 为圆柱 函数)是现代科 学技术领 域 中经常遇 到的一类特殊 函数 .1732 年伯努利研究 直悬链的摆动 问题,以及 1764 年欧拉研 究拉 紧圆 ...

  4. python dataframe函数添加行名称_Python pandas.DataFrame.to_records函数方法的使用

    DataFrame.to_records(index=True, column_dtypes=None, index_dtypes=None) 将DataFrame转换为一个NumPy记录数组. 如果 ...

  5. excel中if函数怎么用android,Excel函数中的IF条件函数怎么用?四个IF函数公式带你轻松上手...

    对于学习Excel的同学来说,了解Excel函数最开始接触到的应该就是IF条件判断函数.这个函数在实际运用中也是非常的普遍.作为一种逻辑判断函数,对于许多同学来说,感觉也是非常的难.今天我们就来通过四 ...

  6. 函数——IIFE、作用域、函数调用、函数应用、闭包

    IIFE 立即调用的函数表达式 IIFE的作用: 1.页面加载完成后只执行一次的设置函数 2.将设置函数中的变量包裹在局部作用域中,不会泄露全局变量 先来看一下不采用IIFE时的函数声明和函数调用: ...

  7. oracle用户密码规则,使用Oracle自带profile以及函数简单设定Oracle用户名密码规则...

    使用Oracle自带profile以及函数设定密码规则 $ sqlplus / as sysdba SQL > (select PROFILE from dba_users where user ...

  8. 28 Oracle深度学习笔记——ORACLE自带DBMS函数包

    28.Oracle深度学习笔记--ORACLE自带DBMS函数包 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50830889 ...

  9. 28.Oracle深度学习笔记——ORACLE自带DBMS函数包

    28.Oracle深度学习笔记--ORACLE自带DBMS函数包 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50830889 ...

最新文章

  1. socket可能造成阻塞的函数有:connect()、accept()、读写函数、select()、poll()、gethostbyname()等
  2. 国内四大搜索站长工具
  3. 线性表的链式表示——循环链表
  4. 闲鱼发布:十大无用商品、创业雷区、塌房明星,内容劲爆与扎心...
  5. iOS培训教程——创建第一级控制器
  6. eclipse下tomcat临时目录位置
  7. log4j 日志级别_log4j-Mybatis(5)
  8. Qt QPushButton 解决触摸屏点击 pressed样式表无效
  9. varbinary mysql,如何在MySQL中存储varbinary?
  10. 软件模式、GRASP原则,GoF设计模式、设计模式分类、设计模式的优点。
  11. 如何用pe备份linux系统盘,使用轻松备份创建可启动光盘或U盘
  12. 计算机运行命令jar,jar文件打开教程
  13. 打开计算机读取硬盘慢,机械硬盘读写速度慢几招优化方法提升!
  14. 哪种台灯的灯光适合学生用?盘点真正适合孩子的护眼台灯
  15. VMware vCenter/vSphere/vSan/Esxi/7.0 lic许可
  16. [T00ls]DEDECMS 0DAY
  17. 世界上以一台计算机体积多大,世界上体积最大的计算机器有多大
  18. Cesium 概述 (一)
  19. “二码合一”健康码和行程码一次出示即可
  20. 记一次尴尬的调试错误:在形参表中不匹配

热门文章

  1. 最简单的基于FFmpeg的AVDevice例子(读取摄像头)
  2. 大厂中秋礼盒大PK!祝大家中秋快乐,送大家鹅厂月饼礼盒!
  3. 干货 | 这次我们看看阿里的人是如何蹂躏CPU的
  4. Kafka端到端审计
  5. 设计模式:观察者模式(Observer)
  6. IO多路转接之epoll
  7. 【专题介绍】视频内容生产与消费创新(Part1)
  8. 06 / LiveVideoStack主编观察:六岁的Frame.io被收购
  9. 【线上圆桌整理 - 微软】后疫情时代现代化办公新趋势
  10. crond和crontab