Python как преобразовать объект в метку времени - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть два столбца с отметкой времени (часы и минуты) и считывается как объект в pandas. Мне нужно рассчитать разницу, есть ли лучший способ сделать это ??

Col1        Col2
21:40.9     21:41
21:41       21:41
21:41.123   21:41
21:41.2.    21:41

1 Ответ

0 голосов
/ 09 апреля 2020

попробуйте это:

import pandas as pd
from datetime import datetime as dt

#create dataframe
df = pd.DataFrame(columns=['Col1','Col2','Diff'])
df['Col1'] = [dt.strptime('21:40.9', '%M:%S.%f'), dt.strptime('21:41', '%M:%S'), dt.strptime('21:41.123', '%M:%S.%f'), dt.strptime('21:41.2', '%M:%S.%f')]
df['Col2'] = [dt.strptime('21:41', '%M:%S'), dt.strptime('21:41', '%M:%S'), dt.strptime('21:41', '%M:%S'), dt.strptime('21:41', '%M:%S')]
df['Diff'] = df.apply(lambda x: x.Col2 - x.Col1 if x.Col2 > x.Col1 else x.Col1 - x.Col2, axis=1)
df['Col1'] = df['Col1'].apply(lambda x: x.strftime('%M:%S.%f'))
df['Col2'] = df['Col2'].apply(lambda x: x.strftime('%M:%S.%f'))

print(df)

с выводом:

           Col1          Col2            Diff
0  21:40.900000  21:41.000000 00:00:00.100000
1  21:41.000000  21:41.000000        00:00:00
2  21:41.123000  21:41.000000 00:00:00.123000
3  21:41.200000  21:41.000000 00:00:00.200000

к сожалению, формат ваших данных не согласован (21:41 против 21:40.9), поэтому он битовый дольше конвертировать их в один и тот же формат.

...