Не удается преобразовать объект времени в datetime64 [нс] - PullRequest
0 голосов
/ 14 декабря 2018

Моя главная цель - узнать общее количество часов, затраченное на индивидуальную работу.Я попытался минус два столбца времени, но получил ошибку: <class 'datetime.time'> is not convertible to datetime.

Я запустил .info () и увидел, что столбцы времени были объектами.В файле Excel форматом является только время, а не формат даты и времени.Я попытался преобразовать первый столбец времени в формат даты и времени, и вот результат:

import pandas as pd
df = pd.read_excel('C:/users/paul/desktop/data project/July.xls', index_col=0)
hrs_st = (pd.to_datetime(df['AST'].str.strip(), format='%H:%M:%S'))
print (hrs_st)

Заказ на работу

BAEBRO-906063           NaT
BAEBRO-906191           NaT
BAEBRO-906207           NaT
BAEBRO-906079           NaT
BAEBRO-906095           NaT
BAEBRO-906159           NaT
...

Ответы [ 2 ]

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

Я придумал лучшее решение, которое отлично подходит для моей первоначальной задачи, а именно: общее время, затрачиваемое на выполнение рабочего задания.Это решение помогает превзойти формат времени Excel, который является типом объекта.После преобразования в datetime [64] включается минус один столбец другим прямо вперед.

import pandas as pd from datetime import time from datetime import timedelta

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

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

#to convert time format column which is an object to datetime[64 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'] hrs_ft = rm_work['AFT'] hrs_st = rm_work['AST']

hrs_t = hrs_ft - hrs_st

Print(hrs_t)
0 голосов
/ 15 декабря 2018

Немного смущает, если честно.Не могли бы вы немного подробнее рассказать о своей главной цели и дать больше информации о том, как дата отображается в вашем файле Excel.


second edit * |Я попытался прокомментировать то, что я пишу в коде.


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

Вот так выглядит мой файл Excel:

enter image description here

Вот как выглядит код для чтения и вычисления различий очень простым способом:

import pandas as pd

df = pd.read_excel('dates.xlsx') #reading my excel

timeStart = [] #declaring 2 lists where I'm gonna put my records 
timeEnd = [] 

#Here I append my values from the excel to my lists
for value in df.get('col1'):
    timeStart.append(value)
for value in df.get('col2'):
    timeEnd.append(value)


#I suppose they both have the same amount of elements in list
#therefore I can iterate for the len of any list between timeStart and timeEnd
for i in range(len(timeStart)):
    #datetime.time object doesn't allow '-' operator to catch it's time difference,
    #you can calculate it like this having how much hours, minutes or seconds
    #spent working. Or you can just concatenate all 3 results to get it all.
    hours = timeEnd[i].hour - timeStart[i].hour #hours difference
    minutes = timeEnd[i].minute - timeStart[i].minute #minutes difference
    seconds = timeEnd[i].second - timeStart[i].second #second difference
    print(type(hours), type(minutes), type(seconds)) #all my results are int
    print(hours, minutes, seconds) #I can see the difference from one time to another

Эточто я получаю в выводе:

<class 'int'> <class 'int'> <class 'int'> #Here you can see I have 3 int types
1 30 15 #read as 1 hour 30 minutes and 15 seconds
<class 'int'> <class 'int'> <class 'int'>
1 30 15
<class 'int'> <class 'int'> <class 'int'>
1 30 15
<class 'int'> <class 'int'> <class 'int'>
1 30 15
<class 'int'> <class 'int'> <class 'int'>
1 30 15
<class 'int'> <class 'int'> <class 'int'>
1 30 15
<class 'int'> <class 'int'> <class 'int'>
1 30 15
<class 'int'> <class 'int'> <class 'int'>
1 30 15
<class 'int'> <class 'int'> <class 'int'>
1 30 15
[Finished in 0.5s]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...