【问题标题】:How Do I Format a pandas timedelta object?如何格式化 pandas timedelta 对象?
【发布时间】:2017-01-21 18:27:41
【问题描述】:

我正在使用 pandas timedelta 对象来跟踪运动相关数据集中的分段时间,使用以下结构:

import pandas as pd
pd.to_timedelta("-0:0:1.0")

这本机报告为:

-1 days +23:59:59

我可以使用 pd.to_timedelta("-0:0:1.0").total_seconds() 获取原始秒数,但如果负数以分钟或小时为单位,这很不方便:

对于表达式:

pd.to_timedelta("-1:2:3.0")

如何从timedelta 对象而不是-3723.0000000000005(带有浮动错误)或-1 days +22:57:57 格式获取格式为"-1:2:3.0-1 hour, 2 minutes, 3 seconds 的报告?

【问题讨论】:

    标签: python pandas timedelta


    【解决方案1】:

    查看作为相关问题答案提供的函数strfdelta(tdelta, fmt)https://stackoverflow.com/a/8907269/454773

    【讨论】:

    • 知道如何在打印出df.to_html() 时将此格式应用于整列吗?
    【解决方案2】:

    这是你想要的吗?

    In [223]: df
    Out[223]:
                  delta
    0 -1 days +23:59:59
    1 -1 days +22:57:57
    2          00:00:11
    
    In [224]: df.delta.abs().dt.components
    Out[224]:
       days  hours  minutes  seconds  milliseconds  microseconds  nanoseconds
    0     0      0        0        1             0             0            0
    1     0      1        2        3             0             0            0
    2     0      0        0       11             0             0            0
    

    【讨论】:

    • 噢!好的,是的..如果否定就绝对。 components 方法也很方便......我真正想要的是一种直接使用 strftime 格式控制 delta 对象的显示格式的方法。
    【解决方案3】:

    这是一个运行良好的可悲解决方案。

    (pd.to_datetime('2262-04-11') + mydelta).strftime('%H:%M')
    

    【讨论】:

      猜你喜欢
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      相关资源
      最近更新 更多