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

pandas库在python编程里面的角色越来越重要,原生的dict类型数据和pandasdataframe类型之间是如何相互转化的呢?本文中做个简要的探讨。

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

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

前文回顾

定义个dataframe的方式很多,可以参考:

dataframe类型数据和csv文件的相互转化,可以参考:

numpydataframe的相互转化,可以参考:

ndarray/list/set/tuple/dict的遍历方式对比:

可转换的dict

事实上,并不是所有的dict都能转化为dataframe。只有一部分dict类型数据,可以转化为dataframe

d1 = {'s': "su"}
d2 = {'s': ["su"]}
d3 = {'s': ["su"], 'n': ["nan", "南"]}
d4 = {'s': ["su", "苏"], 'n': ["nan", "南"]}

上面的四个dict中,只有d2d4这两个dict才能变成dataframe。可以看到:能变成dataframedict,它的value都是list,并非普通的string或者int类型。并且每个作为valuelist的长度都是相同的。

可能会得到下面的错误信息:

ValueError: If using all scalar values, you must pass an index
ValueError: All arrays must be of the same length

dict强转dataframe【推荐】

强转dataframe总是被优先推荐的,简单明了直接。

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

输出:

    s     n
0   su    nan
1   苏    南

from_dict()默认【推荐】

直接上代码:

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

输出:

    s     n
0   su    nan
1   苏    南
orient英文解释为:朝向,方向。这里解释为数据的方向,默认为列。

from_dict()索引做列名

from_dict()必然有其它的使用方式,但是,很不符合默认的逻辑。

import pandas as pd
d = {'s': ["su", "苏"], 'n': ["nan", "南"]}
dd = pd.DataFrame.from_dict(d, orient='index')
print(dd)
dd = pd.DataFrame.from_dict(d, orient='index', columns=['r1', 'r2'])
print(dd)

输出:

     0  1
s   su  苏
n  nan  南
    r1 r2
s   su  苏
n  nan  南

from_dict()特殊格式tight

# d = {}
pd.DataFrame.from_dict(d, orient='tight')

这个特殊的tight格式及使用方式,留作以后讨论。

一个小trick

pd.DataFrame.from_dict(d)

直接去掉.from_dict字样,一样能执行成功。当然,一个是类型强转,一个是调用了方法from_dict()

结语

这个dataframe类型的数据,是使用python处理数据集的时候最常见也是最强大的表现形式,它由pandas这个第三方库提供。更多苏南大叔的python的相关经验文章,请参考:

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

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

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

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