本文首发于 知乎
我们来看下面6组数据
d = {'name' : ['a', 'b', 'c'],
'num' : [1, 2, 3]}
lt = [('a', 1), ('b', 2), ('c', 3)]
ld = [{'name': 'a', 'num': 1},
{'name': 'b', 'num': 2},
{'name': 'c', 'num': 3}]
ld1 = [{'a': 1}, {'b': 2}, {'c': 3}]
ls = [{'a', 1}, {'b', 2}, {'c', 3}]
d1 = {'a': 1, 'b': 2, 'c': 3}
考虑一下他们都表示什么,他们之间的关系是什么,有没有发蒙?
下面我们就好好理一下这些基础的数据类型
1.从data.frame的角度考虑
从data.frame的角度考虑,前面三个的内在含义是一样的,它们都可以直接调用pandas库中的
DataFrame
函数构造一个数据框,如下所示
>>> d = {'name' : ['a', 'b', 'c'],
... 'num' : [1, 2, 3]}
>>> lt = [('a', 1), ('b', 2), ('c', 3)]
>>> ld = [{'name': 'a', 'num': 1},
... {'name': 'b', 'num': 2},
... {'name': 'c', 'num': 3}]
>>>
>>> import pandas as pd
>>> pd.DataFrame(d)
name num
0 a 1
1 b 2
2 c 3
>>> pd.DataFrame(lt, columns=('name', 'num'))
name num
0 a 1
1 b 2
2 c 3
>>> pd.DataFrame(ld)
name num
0 a 1
1 b 2
2 c 3
d
是按照列拆分,
lt
是按照行拆分,
ld
也是按行拆分,只是每次都带有索引项。
我们用爬虫抓取到的数据最常见的是
ld
的形式,如下图所示
(改进 json)
将
ld
向其他两种类型转化的代码如下所示
>>> ld
[{'name': 'a', 'num': 1}, {'name': 'b', 'num': 2}, {'name': 'c', 'num': 3}]
>>> [tuple(i.values()) for i in ld]
[('a', 1), ('b', 2), ('c', 3)]
>>> {'name': [d['name'