将hh:mm:ss[String]格式的持续时间转换为分钟



我有hh:mm:ss格式的等待时间。我想将它们转换为等待分钟[这是以分钟为单位的总等待时间]。等待时间中的一些值是0或负值,如-1:0、-8:9:0。我想将它们转换为0分钟。WaitingTime是一个pandas数据帧,其值为Strings。

**WaitingTime**
0
0
00:07:20
00:17:42
00:25:25
00:02:05
00:45:19
-1:0:0
-8:16:47
-9:17:43
0
00:15:07
-1:0:0

希望我在下面几行能帮上忙。。。

import datetime
a_time='-00:05:36'
try:
given_time = datetime.datetime.strptime(a_time, '%H:%M:%S')
minuts = given_time.hour*60+given_time.minute+given_time.second/60
print(minuts)
except ValueError:
given_time = datetime.datetime.strptime(a_time, '-%H:%M:%S')
minuts = given_time.hour * 60 + given_time.minute + given_time.second / 60
print(minuts)

以下是熊猫的一些变通方法,采用不同的列名进行解释,您可以根据自己的要求覆盖,希望这会有所帮助。。。

import datetime
import pandas
# Taken The waiting time column in excel
myframe = pandas.read_excel('Book1.xlsx',sheet_name='Sheet1')
myframe['NewTime'] = myframe['WaitingTime'].astype(str)
myframe['NewTime_2'] =  myframe['NewTime'].replace('-','', regex=True)
myframe['converted_time2'] = myframe['NewTime_2'].replace(to_replace='0',value='00:00:00')
myframe['converted_time3'] = pandas.to_datetime(myframe['converted_time2'], format='%H:%M:%S')
myframe['minutes']= myframe['converted_time3'].dt.minute
print(myframe['minutes'].head())
myframe.to_excel('output.xlsx', index=False)

快速解决方案,只需检查第一个字符是否为'-'。

>>> import pandas as pd
>>> df = pd.DataFrame({"waitingtime": ["00:23:00", "0", "-1:00:00"]})
>>> df["waitingtime"].apply(lambda x: "0" if x[0] == '-' else x)
0    00:23:00
1           0
2           0
Name: waitingtime, dtype: object

最新更新