Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 减去数据帧时间以浮点形式获取小时数_Excel_Pandas_Dataframe_Csv - Fatal编程技术网

Excel 减去数据帧时间以浮点形式获取小时数

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.

输入文件“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.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。完成了任务。谢谢大家