Python Pandas中计算时间差并转为小数小时的实现方法
解决Pandas时间差转小数小时的问题
嘿,这个问题我之前也碰到过!你现在得到的z是Pandas的Timedelta对象,它默认的字符串输出格式是0 days HH:MM:SS,但要转换成你想要的小数小时其实很简单,这里给你两种实用的方法:
方法一:用total_seconds()转换(推荐)
这是最简洁直接的方式,因为1小时等于3600秒,我们只需要把时间差的总秒数除以3600就能得到小数形式的小时数:
g = file.start[0] h = file.finish[0] z = h - g # 转换为小数小时 hours = z.total_seconds() / 3600 print(hours)
比如你的示例:开始时间8:00:00,结束时间16:30:00,运行后会输出8.5;如果是8小时整,就会输出8.0,完全符合你的需求。
方法二:拆分时分秒计算
如果你想更直观地拆分时间组件来计算,也可以通过Timedelta的components属性获取小时、分钟、秒,再分别转换后相加:
g = file.start[0] h = file.finish[0] z = h - g # 拆分时分秒并转换为小时 hours = z.components.hours + z.components.minutes/60 + z.components.seconds/3600 print(hours)
这种方法和第一种结果完全一致,但代码相对冗长一些,更适合需要单独处理时分秒的场景。
简单解释下:Pandas的Timedelta对象存储了时间差的各个组件,我们只需要把分钟转成0.xx小时、秒转成更小的小数,再和小时数相加就可以了。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

