熊猫-H:M:S字符串格式的数学运算

时间:2019-12-06 15:48:40

标签: python pandas datetime math

我有一些时间数据,我需要从每月的最小值(第一行)中减去最大值(最后一行)。 HOURS列是字符串(对象)格式,但是我不知道如何正确地将其转换为当前格式。最终结果需要显示为H:M:S。数据如下:

MACHINE HOURS       MONTH

M400    54:56:00    December
M400    61:54:52    December
M400    75:38:52    December
M400    89:21:09    December
M400    13:44:00    November
M400    27:28:00    November
M400    41:12:00    November

我要寻找的最终结果是:

MACHINE HOURS       MONTH

M400    34:25:09    December
M400    27:28:00    November

将其转换为最快的方法是什么(我假设为日期时间格式),先进行数学运算然后反转回去?

1 个答案:

答案 0 :(得分:0)

尽管可能会有更有效的方法,但我可以想到的一种方法是

def convert(h):
    #convert string to seconds
    h = h.split(':')
    h = list(map(int, h))
    return h[0]*3600+h[1]*60+h[2]

def convert_back(t):
    #convert seconds to string
    m,s = divmod(t,60)
    h,m = divmod(m,60)
    return f"{h}:{m}:{s}"

df['time'] = df['hours'].apply(convert)

final = (df.groupby('month').max()['time'] - df.groupby('month').min()['time']).apply(convert_back)

df_final = df.groupby('month').max()
df_final['hours'] = final

df_final是您要寻找的。