Исправление несовместимого форматирования от 24 до 12 часов. - PullRequest
1 голос
/ 09 июля 2019

Мне нужно по существу измерить, сколько каждый сотрудник получает за каждый час работы.Была некоторая очистка данных, и поэтому я пытаюсь сделать форматирование согласованным.Это домашнее задание, и оно оказывается трудным.Я новичок в Python, поэтому, пожалуйста, не стесняйтесь сжимать код.Я пытаюсь использовать базу данных панд.

CSV-файл в pandas

   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 до 12 при условии, что end_break и start_break были раньше datetime.datetime (12,0,0).

Я не уверен, как рассчитать деньги в час.Может быть, используя операторы if?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...