Excel 减去数据帧时间以浮点形式获取小时数
输入文件“clockTimes2020-40.xlsx”是CSV。时间以列为单位。 我想计算时差“dur”,作为float中的小时数,但我得到了指示的错误消息Excel 减去数据帧时间以浮点形式获取小时数,excel,pandas,dataframe,csv,Excel,Pandas,Dataframe,Csv,输入文件“clockTimes2020-40.xlsx”是CSV。时间以列为单位。 我想计算时差“dur”,作为float中的小时数,但我得到了指示的错误消息 import pandas import datetime print('pandas.__version__:',pandas.__version__) df = pandas.read_excel('clockTimes2020-40.xlsx', sheet_name='clockTimes2020-40') line0 = df.
import pandas
import datetime
print('pandas.__version__:',pandas.__version__)
df = pandas.read_excel('clockTimes2020-40.xlsx', sheet_name='clockTimes2020-40')
line0 = df.loc[0]
print('line0: ',line0)
print('line0 type is ',type(line0))
beg = line0[4]
end = line0[5]
print('beg = ',beg, 'type: ',type(beg))
print('end = ',end, 'type: ',type(end))
dur = end - beg
print('dur = ',dur,'type:',type(dur))
结果
运行文件('C:/Users/Muir/ABCorp/untitled0.py',wdir='C:/Users/Muir/ABCorp')
熊猫。版本:1.1.3
第0行:CID 1
亚当斯名字
Fname Francis J
星期一2020-09-28 00:00:00
Moin 08:00:10
穆特17:16:24
周二2020-09-29 00:00:00
星期二07:58:41
图16:55:55
星期三2020-09-30 00:00:00
韦恩07:53:00
我们出去17:45:45
星期四2020-10-01 00:00:00
薄07:53:00
Thout 17:45:45
星期五2020-10-02 00:00:00
星期五07:53:00
弗罗特16:59:45
星期六2020-10-03 00:00:00
赛因00:00:00
Saout 00:00:00
太阳2020-10-04 00:00:00
星期一00:00:00
Suout 00:00:00
名称:0,数据类型:对象
line0类型为
beg=08:00:10类型:
结束=17:16:24类型:
回溯(最近一次呼叫最后一次):
文件“C:\Users\Muir\ABCorp\untitled0.py”,第21行,在
dur=结束-结束
TypeError:-:“datetime.time”和“datetime.time”的操作数类型不受支持
要计算差异,必须将datetime.time对象转换为datetime.datetime对象。然后当你减法的时候,你得到一个timedelta对象。为了找出timedelta对象的小时数,您必须找到总秒数并将其除以3600
# Create datetime objects for each time (a and b)
dateTimeA = datetime.datetime.combine(datetime.date.today(), a)
dateTimeB = datetime.datetime.combine(datetime.date.today(), b)
# Get the difference between datetimes (as timedelta)
dateTimeDifference = dateTimeA - dateTimeB
# Divide difference in seconds by number of seconds in hour (3600)
dateTimeDifferenceInHours = dateTimeDifference.total_seconds() / 3600
#编辑[已解决]:
dur=((end.hour*3600 + end.minute *60 + end.second ) - ( beg.hour*3600 + beg.minute *60 + beg.second )) /3600.
否则,您可以将作为字符串的“时间”转换为日期时间类型
然后,您可以使用总秒数()/3600以浮动小时数获得“时间”
看看这个例子:
from datetime import datetime
beg = '08:00:10'
end = '17:16:24'
dur = datetime.strptime(end, '%H:%M:%S') - datetime.strptime(beg, '%H:%M:%S')
result = dur.total_seconds()/3600
print(result)
.xlsx
不是csv:-)@user3338092,打印((end.hour*3600+end.minute*60+end.second)-(beg.hour*3600+beg.minute*60+beg.second))/3600。)dur=((end.hour*3600+end.minute*60+end.second)-(beg.hour*3600+beg.minute*60+beg.second))/3600。完成了任务。谢谢大家