请把考勤记录文件改成xlsx文件,并默认第一列为编号,第二列为时间,重新编写一下示例代码
时间: 2023-12-23 09:02:34 浏览: 57
好的,以下是将考勤记录文件改为xlsx文件,并默认第一列为编号,第二列为时间的示例代码:
```python
import pandas as pd
# 读取考勤记录文件
df = pd.read_excel('attendance.xlsx', index_col=0)
# 员工考勤记录字典,key为员工编号,value为考勤记录列表
employee_records = {}
# 遍历每行记录
for index, row in df.iterrows():
employee_id = index
punch_time = row['时间']
# 如果员工编号不在字典中,则添加一个空的考勤记录列表
if employee_id not in employee_records:
employee_records[employee_id] = []
# 将考勤记录添加到员工的考勤记录列表中
employee_records[employee_id].append(punch_time)
# 遍历每个员工的考勤记录
for employee_id, records in employee_records.items():
start_time = None # 上班时间
end_time = None # 下班时间
total_time = 0 # 工作时间
# 遍历考勤记录
for i, record in enumerate(records):
# 如果是最后一条记录,则只计算上班部分时间
if i == len(records) - 1 and start_time is not None:
total_time += (record - start_time).seconds // 60
break
# 如果是第一条记录或者上一条记录是离开记录,则更新上班时间
if i == 0 or '离开' in records[i - 1]:
start_time = record
# 如果是离开记录,则更新下班时间并计算时间差
elif '离开' in record:
end_time = record
total_time += (end_time - start_time).seconds // 60
# 重置上班时间和下班时间
start_time = None
end_time = None
# 输出结果
print(f'员工编号:{employee_id},工作时间:{total_time}分钟')
```
在上述代码中,首先使用`pandas`库的`read_excel()`方法读取考勤记录文件,并将第一列作为索引列,然后遍历每行记录,统计靠近上班和靠近下班的打卡时间,并计算时间差。如果员工中途离开,则只计算上班部分时间。最后输出结果。
阅读全文