You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:06:03