我有一些时间数据,我需要从每月的最小值(第一行)中减去最大值(最后一行)。 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
将其转换为最快的方法是什么(我假设为日期时间格式),先进行数学运算然后反转回去?
答案 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
是您要寻找的。 p>