python编程,pandas的dataframe类型如何转化为原生dict?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
本文的话题是:dataframe
类型数据,如何转为原生dict
类型。转化的方案细节上是略有区别的。所以,得到的结果也是有所区别。具体采用何种转化方案,还要看读者自己的实际需求。
苏南大叔的“程序如此灵动”博客,这里讲述苏南大叔和计算机代码之间的故事。测试环境:python@3.12.3
,pandas@2.2.2
,numpy@1.26.4
。
前文回顾
主要回顾两篇文章:
- 如何定义一个
dataframe
。https://newsn.net/say/pandas-dataframe.html dict
如何转dataframe
。https://newsn.net/say/dataframe-from-dict.html
本文是上述文章的姊妹篇,dataframe
如何转dict
?
龙套角色
本文的龙套角色如下:
import pandas as pd
d = {'s': ["su", "苏"], 'n': ["nan", "南"]}
df = pd.DataFrame.from_dict(d)
注意变量d
的写法。和后续的不同方案结果有关。
方案零,强转【不推荐】
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
相关经验文字,请参考:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。