我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文的话题是:dataframe类型数据,如何转为原生dict类型。转化的方案细节上是略有区别的。所以,得到的结果也是有所区别。具体采用何种转化方案,还要看读者自己的实际需求。

苏南大叔:python编程,pandas的dataframe类型如何转化为原生dict? - dataframe-to-dict
python编程,pandas的dataframe类型如何转化为原生dict?(图2-1)

苏南大叔的“程序如此灵动”博客,这里讲述苏南大叔和计算机代码之间的故事。测试环境:python@3.12.3pandas@2.2.2numpy@1.26.4

前文回顾

主要回顾两篇文章:

本文是上述文章的姊妹篇,dataframe如何转dict

龙套角色

本文的龙套角色如下:

import pandas as pd
d = {'s': ["su", "苏"], 'n': ["nan", "南"]}
df = pd.DataFrame.from_dict(d)

注意变量d的写法。和后续的不同方案结果有关。

苏南大叔:python编程,pandas的dataframe类型如何转化为原生dict? - 代码执行结果
python编程,pandas的dataframe类型如何转化为原生dict?(图2-2)

方案零,强转【不推荐】

dataframe强转dict不会报错,但是强制的结果显然并不是大家所需要的。

dd = dict(df)
print(dd,type(dd))

输出:

{'s': 0    su
1     苏
Name: s, dtype: object, 'n': 0    nan
1      南
Name: n, dtype: object} 
<class 'dict'>

显然和期待输出值有较大差距。

方案一,参数默认【推荐】

这个数据还原效果上看,和原变量较为相似。转换为字典,列为键,行为值。

d1 = df.to_dict()
print(d1)

输出:

{'s': {0: 'su', 1: '苏'}, 'n': {0: 'nan', 1: '南'}}

方案二,orient='list'【推荐】

转换为字典,列名为键,列数据为值。在本文中,还原程度最高,效果最好。

d2 = df.to_dict(orient='list')
print(d2)

输出:

{'s': ['su', '苏'], 'n': ['nan', '南']}

方案三,orient='records'【不推荐】

将DataFrame的每一行转换为字典,索引为键,列数据为值。

d3 = df.to_dict(orient='records')
print(d3)
print(type(d3))

输出:

[{'s': 'su', 'n': 'nan'}, {'s': '苏', 'n': '南'}]
<class 'list'>
注意:这个结果拿到的类型是个list,而不是dict类型,list内部是dict类型。这多多少少和to_dict()的函数初衷有些不匹配。

结语

常见的数据类型是可以相互转化的,更多python相关经验文字,请参考:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python