首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从excel中获取数据并使用Python 3.6对其进行排序的最佳方法

从excel中获取数据并使用Python 3.6对其进行排序的最佳方法
EN

Stack Overflow用户
提问于 2018-08-05 03:54:15
回答 1查看 482关注 0票数 1

我需要一些主要的帮助,因为我是Python的新手。我需要执行一个从Excel读取数据的任务,然后允许我按降序对其进行排序。我最初已经开始将Excel文件放入字典,因为Excel文件有一个标题行,然后数千行包含数据。我知道字典本身并不是“可排序的”,但我认为,考虑到我的需求,字典将是最好的方法。然而,我想知道数据帧是否可以工作,但需要任何和所有的指导,因为我正在努力弄清楚这一点。

我需要得到每个县份额最大的3种商品,包括商品名称。例如,对于第一行Lynd County,我希望返回以下内容-玉米- 19.52,牛- 13.68,草莓- 12.31。也可以像这样:玉米: 19.52,牛: 13.68,草莓: 12.31。但是,我需要按每个商品的值对数据进行排序。

我在网上找到了以下代码,并使用它将Excel数据读取到由字典组成的列表结构中,但我不确定这是否是最好的方法。

代码语言:javascript
复制
import xlrd
from xlrd import open_workbook
book = open_workbook('DictionaryProject.xlsx')
sheet = book.sheet_by_name('Sheet1')
keys = [sheet.cell(0, col_index).value for col_index in range(sheet.ncols)]
dict_list =[]

for row_index in range(1, sheet.nrows):
    d= {keys[col_index]: sheet.cell(row_index, col_index).value
        for col_index in range(sheet.ncols)}
    dict_list.append(d)

print(dict_list)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-05 04:16:30

您可以使用pandas解析数据,然后只需使用纯python即可随心所欲地显示数据。

代码语言:javascript
复制
df = pd.read_excel('filename.xlsx')
d = df.set_index('county').to_dict('index')

例如,对于数据帧

代码语言:javascript
复制
    county    cattle    strawberry  corn
0   CountyA   10        30          1
1   CountyB   2         2           2
2   CountyC   50        15          3

你会得到

代码语言:javascript
复制
{'CountyA': {'cattle': 10, 'strawberry': 30, 'corn': 1},
 'CountyB': {'cattle': 2, 'strawberry': 2, 'corn': 2},
 'CountyC': {'cattle': 50, 'strawberry': 15, 'corn': 3}}

例如,你可以这样做,

代码语言:javascript
复制
for k,v in d.items():
    i = sorted(v.items(), key=lambda x: x[1], reverse=True)
    print(k, ', '.join(['{}: {}'.format(com, value) for com, value in i]))

你也可以根据@jpp下面的评论使用f-strings

代码语言:javascript
复制
print(k, ', '.join([f'{com}: {value}' for com, value in i]))

,它将输出

代码语言:javascript
复制
CountyA strawberry: 30, cattle: 10, corn: 1
CountyB cattle: 2, strawberry: 2, corn: 2
CountyC cattle: 50, strawberry: 15, corn: 3
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51689114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档