计算str格式之间的分钟数;hh:mm-hh:mm“;python

计算str格式之间的分钟数;hh:mm-hh:mm“;python,python,pandas,string,datetime,Python,Pandas,String,Datetime,我有一个带有TimeOfWork列的df,它有一个str类型 “hh:mm-hh:mm” 我需要一个新的列,每个人工作的分钟数。例如,若在TimeOfWork列中有一个值“10:00-11:30”,那个么在new列中应该有90。人们可以在午夜工作,因此值可以是“22:00-01:00”您可以将工时列拆分为单独的列(开始时间和结束时间),将这些列解析为日期时间,计算时间增量并计算超过午夜的时间。从时间增量中,您可以轻松获得工作的总分钟数。例: import pandas as pd # exam

我有一个带有TimeOfWork列的df,它有一个str类型

“hh:mm-hh:mm”


我需要一个新的列,每个人工作的分钟数。例如,若在TimeOfWork列中有一个值“10:00-11:30”,那个么在new列中应该有90。人们可以在午夜工作,因此值可以是“22:00-01:00”

您可以将工时列拆分为单独的列(开始时间和结束时间),将这些列解析为日期时间,计算时间增量并计算超过午夜的时间。从时间增量中,您可以轻松获得工作的总分钟数。例:

import pandas as pd

# example data:
df = pd.DataFrame({'TimeOfWork': ["10:00 - 11:30",  "22:00 - 01:00"]})

# split to separate start and end of work columns
df[['startTime', 'endTime']] = df['TimeOfWork'].str.replace(' ', '').str.split('-', expand=True)

# parse to datetime and calculate timedelta
df['startTime'], df['endTime'] = pd.to_datetime(df['startTime'], format='%H:%M'), pd.to_datetime(df['endTime'], format='%H:%M')
df['deltaTime'] = df['endTime']-df['startTime']

# account for over-night hours (date change)
df.loc[df['deltaTime']<pd.Timedelta(0), 'deltaTime'] +=  pd.Timedelta(days=1)

# extract minutes
df['minutesWorked'] = df['deltaTime'].dt.total_seconds()/60

# df['minutesWorked']
# 0     90.0
# 1    180.0
# Name: minutesWorked, dtype: float64
将熊猫作为pd导入
#示例数据:
df=pd.DataFrame({'TimeOfWork':[“10:00-11:30”,“22:00-01:00”]})
#拆分以分离“工作开始”列和“工作结束”列
df['startTime','endTime']=df['TimeOfWork'].str.replace('','').str.split('-',expand=True)
#解析datetime并计算timedelta
df['startTime',df['endTime']=pd.to_datetime(df['startTime',格式='%H:%M'),pd.to_datetime(df['endTime',格式='%H:%M'))
df['deltaTime']=df['endTime']-df['startTime']
#超过夜间工作时间的账户(日期变更)

df.loc[df['deltaTime']您可以将TimeOfWork列拆分为单独的列(startTime和endTime),将这些列解析为datetime,计算timedelta并计算超过午夜的小时数。从timedelta中,您可以轻松获得工作的总分钟数。例如:

import pandas as pd

# example data:
df = pd.DataFrame({'TimeOfWork': ["10:00 - 11:30",  "22:00 - 01:00"]})

# split to separate start and end of work columns
df[['startTime', 'endTime']] = df['TimeOfWork'].str.replace(' ', '').str.split('-', expand=True)

# parse to datetime and calculate timedelta
df['startTime'], df['endTime'] = pd.to_datetime(df['startTime'], format='%H:%M'), pd.to_datetime(df['endTime'], format='%H:%M')
df['deltaTime'] = df['endTime']-df['startTime']

# account for over-night hours (date change)
df.loc[df['deltaTime']<pd.Timedelta(0), 'deltaTime'] +=  pd.Timedelta(days=1)

# extract minutes
df['minutesWorked'] = df['deltaTime'].dt.total_seconds()/60

# df['minutesWorked']
# 0     90.0
# 1    180.0
# Name: minutesWorked, dtype: float64
将熊猫作为pd导入
#示例数据:
df=pd.DataFrame({'TimeOfWork':[“10:00-11:30”,“22:00-01:00”]})
#拆分以分离“工作开始”列和“工作结束”列
df['startTime','endTime']=df['TimeOfWork'].str.replace('','').str.split('-',expand=True)
#解析datetime并计算timedelta
df['startTime',df['endTime']=pd.to_datetime(df['startTime',格式='%H:%M'),pd.to_datetime(df['endTime',格式='%H:%M'))
df['deltaTime']=df['endTime']-df['startTime']
#超过夜间工作时间的账户(日期变更)

df.loc[df['deltaTime']您可以
拆分
并将值
转换为_datetime
,取它们之间的差值,除以
Timedelta(分钟=1)
,然后通过模除以一天中的分钟数(60*24)来固定午夜的范围:

输出:


      TimeOfWork  MinutesWorked
0  10:00 - 11:30           90.0
1  22:00 - 01:00          180.0

您可以
split
并将值
转换为_datetime
,取它们之间的差值,除以
Timedelta(minutes=1)
,然后通过将其除以一天中的分钟数(60*24)来固定午夜的范围:

输出:


      TimeOfWork  MinutesWorked
0  10:00 - 11:30           90.0
1  22:00 - 01:00          180.0

如果有一些示例数据帧代码,可能对您迄今为止所做的事情进行一些尝试,这将非常方便。将有助于包括您的df、您所做的尝试和所需的输出。如果有一些示例数据帧代码,可能对您所做的事情进行一些尝试,这将非常方便ar.将有助于包括您的df、您尝试过的内容和所需的输出。