Как убрать отрицательные времена из кадра данных? - PullRequest
0 голосов
/ 16 декабря 2018

Я создал фрейм данных в пандах, который показывает расчеты общего времени, затраченного на выполнение рабочего задания.Из-за ошибки, связанной с вводом данных человеком, некоторые временные вычисления выглядят как отрицательное время, как вы можете видеть в строке 30, даже если я поменяю местами на PM, это все равно даст ложное время, так как время работы между 07:30 - 16:00,было бы лучше просто игнорировать эти времена

Work Order  WorkType        AST                 AFT             comp_time
10  BAEBRO-898690   RM  1900-01-01 06:27:41 1900-01-01 08:05:28 01:37:47
13  BAEBRO-914693   RM  1900-01-01 08:30:00 1900-01-01 09:00:00 00:30:00
27  BAEBRO-898787   RM  1900-01-01 10:00:00 1900-01-01 10:30:00 00:30:00
30  BAEBRO-914680   RM  1900-01-01 14:32:08 1900-01-01 10:37:17 -1 days +20:05:09
37  BAEBRO-914660   RM  1900-01-01 10:47:39 1900-01-01 11:32:02 00:44:23`

мой код для получения этого результата:

import pandas as pd
from datetime import time
from datetime import timedelta
from pandas import DataFrame
import matplotlib as plt

df = pd.read_excel('C:/Users/Nativ_Zero/Desktop/work data/July.xls')

df_work = df[['Work Order', 'WorkType', 'AST','AFT']]

df_work['AFT'] = pd.to_datetime(df_work['AFT'], format='%H:%M:%S', errors='coerce')
df_work['AST'] = pd.to_datetime(df_work['AST'], format='%H:%M:%S', errors='coerce')

rm_work = df_work[df_work.WorkType == 'RM']


rm_work['comp_time'] = rm_work['AFT'] - rm_work['AST']
rm_work.head()

1 Ответ

0 голосов
/ 16 декабря 2018

Ниже вам подойдет код:

df = pd.read_excel('C:/Users/Nativ_Zero/Desktop/work data/July.xls')

df_work = df[['Work Order', 'WorkType', 'AST','AFT']]

df_work['AFT'] = pd.to_datetime(df_work['AFT'], format='%H:%M:%S', errors='coerce')
df_work['AST'] = pd.to_datetime(df_work['AST'], format='%H:%M:%S', errors='coerce')

rm_work = df_work[df_work.WorkType == 'RM']


rm_work['comp_time'] = rm_work['AFT'] - rm_work['AST']
rm_work = rm_work[rm_work.comp_time >= pd.Timedelta(0)]  # Filtering condition
rm_work.head()

Вам необходимо сравнить, используя подходящие dtypes, в данном случае Timedelta.

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