加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

将电子表格的列存储在Python字典中

发布时间:2020-12-16 23:07:36 所属栏目:Python 来源:网络整理
导读:我有一个存储在Excel文件中的表,如下所示: Species Garden Hedgerow Parkland Pasture WoodlandBlackbird 47 10 40 2 2Chaffinch 19 3 5 0 2Great Tit 50 0 10 7 0House Sparrow 46 16 8 4 0Robin 9 3 0 0 2Song Thrush 4 0 6 0 0 我正在使用xlrd Python库
我有一个存储在Excel文件中的表,如下所示:
Species     Garden Hedgerow Parkland Pasture Woodland
Blackbird       47       10      40        2        2
Chaffinch       19        3       5        0        2
Great Tit       50        0      10        7        0
House Sparrow   46       16       8        4        0
Robin            9        3       0        0        2
Song Thrush      4        0       6        0        0

我正在使用xlrd Python库来读取这些数据.我将它读入列表列表(将表的每一行存储为列表)没有问题,使用下面的代码:

from xlrd import open_workbook
wb = open_workbook("Sample.xls")
headers = []
sdata = []
for s in wb.sheets():
    print "Sheet:",s.name
    if s.name.capitalize() == "Data":
        for row in range(s.nrows):
            values = []
            for col in range(s.ncols):
                data = s.cell(row,col).value
                if row == 0:
                    headers.append(data)
                else:   
                    values.append(data)
            sdata.append(values)

很明显,header是一个存储列标题的简单列表,sdata包含表数据,存储为列表列表.这是他们的样子:

标题:

[u'Species',u'Garden',u'Hedgerow',u'Parkland',u'Pasture',u'Woodland']

SDATA:

[[u'Blackbird',47.0,10.0,40.0,2.0,2.0],[u'Chaffinch',19.0,3.0,5.0,0.0,[u'Great Tit',50.0,7.0,0.0],[u'House Sparrow',46.0,16.0,8.0,4.0,[u'Robin',9.0,[u'Song Thrush',6.0,0.0]]

但我想将这些数据存储到Python字典中,每列作为包含每列所有值的列表的键.例如(仅显示部分数据以节省空间):

dict = {
    'Species': ['Blackbird','Chaffinch','Great Tit'],'Garden': [47,19,50],'Hedgerow': [10,3,0],'Parkland': [40,5,10],'Pasture': [2,7],'Woodland': [2,2,0]
}

所以,我的问题是:我怎样才能做到这一点?我知道我可以按列而不是按行读取数据,如上面的代码片段,但我无法弄清楚如何将列存储在字典中.

提前感谢您提供的任何帮助.

解决方法

一旦你有了列,这很容易:
dict(zip(headers,sdata))

实际上,看起来你的例子中的sdata可能是行数据,即便如此,这仍然相当容易,你也可以用zip转置表格:

dict(zip(headers,zip(*sdata)))

这两个中的一个是你要求的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读