如何将timedelta类型值转换为保留指定小数位的浮点型天数数值
解决方案
你要的浮点数值本质是timedelta对应的总天数(含小数部分),可以通过总秒数换算得到,以下是不同场景的实现方式:
单个Timedelta对象转换
如果是单独的Timedelta实例,直接调用total_seconds()方法后除以86400(一天的总秒数)即可:
import pandas as pd td = pd.Timedelta('46 days 15:40:17.248459959') float_day = td.total_seconds() / 86400 print(float_day) # 输出:46.65297741273032,和你需要的格式完全匹配
Pandas整列转换
如果是DataFrame中的timedelta类型列,使用dt访问器批量处理即可:
import pandas as pd # 示例数据 df = pd.DataFrame({ 'timedelta_col': [ pd.Timedelta('46 days 15:40:17.248459959'), pd.Timedelta('2 days 03:20:10') ] }) # 转换为天数字段 df['float_day'] = df['timedelta_col'].dt.total_seconds() / 86400
补充说明
- 如果只需要保留8位小数,可搭配
round(8)方法使用:df['float_day'] = (df['timedelta_col'].dt.total_seconds() / 86400).round(8) - 如果你用的是Python标准库的datetime.timedelta,转换逻辑完全一致,同样调用
total_seconds()做换算即可。
内容的提问来源于stack exchange,提问作者Anakin Skywalker
相关产品推荐
相关产品推荐

