恢复excel文件总和

问题描述 投票:0回答:3

你好,我解释了我的问题,我试图通过一个Excel文件恢复每个用户的缺勤总数,在该文件中,一列包含用户和其他缺勤,但是我无法应用循环来执行此操作。我给你看我的代码

读取Excel文件以下:

print(fichier1)
document1 = xlrd.open_workbook(fichier1)
feuille_1 = document1.sheet_by_index(0)

然后我将感兴趣的两列放在列表中:

id = []
absence = []
for row in range(1,253):
     id.append(feuille_1.cell(row, 2))
     absence.append(feuille_1.cell(row, 9)

从这里开始,我受阻,因为我无法进行循环操作,从而使每个用户的缺勤之和得知我知道在文件中有几行与同一用户但缺勤的次数不同。因此,我尝试总结他们的所有缺席。

我遇到的问题是我无法将缺席列转换为首先浮动。

我的excel文件looks like this

仅是一个初始化字典的问题,我可以做这样的事情:

dict = {}
dict[id] = 'absence'

??

python excel python-3.x list
3个回答
0
投票

我的Excel文件如下:My excel file


0
投票

当我理解正确时,在for循环之后您会得到类似的内容:

id = ["jazi", "juge", "juha", "juha", "lebe", "lebe"] absence = ["1", "1", "8", "1", "3", "1"]

您想得到这样的东西:

{"jazi": 1, "juge": 1, "juha": 9, "lebe": 4}

首先,初始化字典:(https://docs.python.org/3/tutorial/datastructures.html#dictionaries)我使用了set()函数来筛选出重复项

result = {}
for name in set(id):
    result[name] = 0

然后,将小时数添加到相应的名称:

for i in range(len(id)):
    hours = float(absence[i))
    name = id[i]
    result[name] += hours

最后一步,漂亮地打印出您的结果:(https://docs.python.org/3/library/pprint.html

import pprint
pprint.pprint(result)

使用zip()和dict compreshion的相同解决方案:

result = {name: 0 for name in set(id)}
for name, hours in zip(id, absence):
    result[name] += float(hours)

0
投票

非常感谢Sadap,这正是我想要做的,我是python的新手,这就是为什么我寻求帮助。您已了解我的问题,并已提出解决方案,我将立即对其进行测试。

© www.soinside.com 2019 - 2024. All rights reserved.