另一种常见的数据形式是嵌套字典(也就是字典的字典):
pop = {'Nevada':{2001:2.4,2002:2.9},
'Ohio' :{2000:1.5,2001:1.7,2002:3.6}}
如果将它传给DataFrame,它就会被解释为:外层字典的键作为列,内层键则作为行索引:
frame3 = pd.DataFrame(pop)
print frame3
输出结果
Nevada Ohio
2000 NaN 1.5
2001 2.4 1.7
2002 2.9 3.6
当然,也可以对该结果进行转置:
print frame3.T
输出结果
2000 2001 2002
Nevada NaN 2.4 2.9
Ohio 1.5 1.7 3.6
内层字典的键会被合并、排序以形成最终的索引。如果显式指定了索引,则不会这样:
frame4 = pd.DataFrame(pop,index=[2001,2002,2003])
print frame4
输出结果
Nevada Ohio
2001 2.4 1.7
2002 2.9 3.6
2003 NaN NaN
由Series组成的字典差不多也是一样的用法:
pdata = {'Ohio':frame3['Ohio'][:2],
'Nevada':frame3['Nevada'][:2]}
frame4 = pd.DataFrame(pdata)
print frame4
Nevada Ohio
2000 NaN 1.5
2001 2.4 1.7
如果设置了DataFrame的index和column的name属性,则这些信息也会被显示出来:
frame3.index.name = 'year'
frame3.columns.name = 'state'
print frame3
输出结果
state Nevada Ohio
year
2000 NaN 1.5
2001 2.4 1.7
2002 2.9 3.6
跟Series一样,values属性也会以二维ndarray的形式返回DataFrame中的数据:
print frame3.values
输出结果
[[ nan 1.5]
[ 2.4 1.7]
[ 2.9 3.6]]
如果DataFrame各个列的数据类型不同,则值数组的数据类型就会选用能兼容所有列的数据类型