计算str格式之间的分钟数;hh:mm-hh:mm“;python
我有一个带有TimeOfWork列的df,它有一个str类型 “hh:mm-hh:mm”计算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列中有一个值“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、您尝试过的内容和所需的输出。