修复了从24小时到12小时格式不一致的问题

时间:2019-07-08 23:09:42

标签: python pandas time formatting data-cleaning

我基本上需要衡量每个员工在每个小时的工作中获得多少报酬。有一些数据清理工作,所以我试图使格式保持一致。 这是一个家庭作业问题,并且证明很困难。我是python的新手,所以请随时压缩代码。我正在尝试使用熊猫数据库。

熊猫的csv文件

   break_notes end_time  pay_rate start_time
0        15-18    23:00      10.0      10:00
1  18.30-19.00    23:00      12.0      18:00
2      4PM-5PM    22:30      14.0      12:00
3          3-4    18:00      10.0      09:00
4     4-4.10PM    23:00      20.0      09:00
5      15 - 17    23:00      10.0      11:00
6      11 - 13    16:00      10.0      10:00
'''

import pandas as pd
import datetime
import numpy as np


work_shifts = pd.read_csv('work_shifts.csv')
break_shifts = work_shifts['break_notes'].str.extract('(?P<start>[\d\.]+)?\D*(?P<end>[\d\.]+)?')

print(work_shifts)

for i in range(len(break_shifts['start'])):
    if '.' not in break_shifts['start'][i]: 
        break_shifts['start'][i] = break_shifts['start'][i] + ':00'
    else:
        break_shifts['start'][i] = break_shifts['start'][i].replace('.',':')

for i in range(len(break_shifts['end'])):
    if '.' in str(break_shifts['end'][i]): 
        break_shifts['end'][i] = break_shifts['end'][i].replace('.',':')
    elif '.' not in str(break_shifts['end'][i]):
        break_shifts['end'][i] = break_shifts['end'][i] + ':00'

for i in range(len(break_shifts['end'])):
    break_shifts['end'][i] = datetime.datetime.strptime(break_shifts['end'][i], '%H:%M').time()
    break_shifts['start'][i] = datetime.datetime.strptime(break_shifts['start'][i], '%H:%M').time()

work_shifts[['start_break','end_break']] = break_shifts[['start', 'end']]

for i in range(len(work_shifts['end_time'])):
    work_shifts['end_time'][i] = datetime.datetime.strptime(work_shifts['end_time'][i], '%H:%M').time()

for i in range(len(work_shifts['start_time'])):
    work_shifts['start_time'][i] = datetime.datetime.strptime(work_shifts['start_time'][i], '%H:%M').time()

print(work_shifts)

这是结果

   break_notes  end_time  pay_rate start_time start_break end_break
0        15-18  23:00:00      10.0   10:00:00    15:00:00  18:00:00
1  18.30-19.00  23:00:00      12.0   18:00:00    18:30:00  19:00:00
2      4PM-5PM  22:30:00      14.0   12:00:00    04:00:00  05:00:00
3          3-4  18:00:00      10.0   09:00:00    03:00:00  04:00:00
4     4-4.10PM  23:00:00      20.0   09:00:00    04:00:00  04:10:00
5      15 - 17  23:00:00      10.0   11:00:00    15:00:00  17:00:00
6      11 - 13  16:00:00      10.0   10:00:00    11:00:00  13:00:00

我尝试添加时间,但是时间类型不一致。如果有其他方法,请提供指导。我需要计算出什么时间有多少雇员,然后计算每小时给雇员多少工资。

我的方法是将中断注释的格式转换为时间,然后将12小时转换为12小时,前提是end_break和start_break都在datetime.datetime(12,0,0)之前。

我不确定如何计算每小时的钱。也许使用if语句?

0 个答案:

没有答案