我需要一些主要的帮助,因为我是Python的新手。我需要执行一个从Excel读取数据的任务,然后允许我按降序对其进行排序。我最初已经开始将Excel文件放入字典,因为Excel文件有一个标题行,然后数千行包含数据。我知道字典本身并不是“可排序的”,但我认为,考虑到我的需求,字典将是最好的方法。然而,我想知道数据帧是否可以工作,但需要任何和所有的指导,因为我正在努力弄清楚这一点。
我需要得到每个县份额最大的3种商品,包括商品名称。例如,对于第一行Lynd County,我希望返回以下内容-玉米- 19.52,牛- 13.68,草莓- 12.31。也可以像这样:玉米: 19.52,牛: 13.68,草莓: 12.31。但是,我需要按每个商品的值对数据进行排序。
我在网上找到了以下代码,并使用它将Excel数据读取到由字典组成的列表结构中,但我不确定这是否是最好的方法。
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)
发布于 2018-08-05 04:16:30
您可以使用pandas
解析数据,然后只需使用纯python即可随心所欲地显示数据。
df = pd.read_excel('filename.xlsx')
d = df.set_index('county').to_dict('index')
例如,对于数据帧
county cattle strawberry corn
0 CountyA 10 30 1
1 CountyB 2 2 2
2 CountyC 50 15 3
你会得到
{'CountyA': {'cattle': 10, 'strawberry': 30, 'corn': 1},
'CountyB': {'cattle': 2, 'strawberry': 2, 'corn': 2},
'CountyC': {'cattle': 50, 'strawberry': 15, 'corn': 3}}
例如,你可以这样做,
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
print(k, ', '.join([f'{com}: {value}' for com, value in i]))
,它将输出
CountyA strawberry: 30, cattle: 10, corn: 1
CountyB cattle: 2, strawberry: 2, corn: 2
CountyC cattle: 50, strawberry: 15, corn: 3
https://stackoverflow.com/questions/51689114
复制相似问题