如何格式化 pandas timedelta 对象?

How Do I Format a pandas timedelta object?

我正在使用 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 对象中获取格式为 "-1:2:3.0-1 hour, 2 minutes, 3 seconds 的报告,而不是 -3723.0000000000005 格式(带有浮点数错误) 或 -1 days +22:57:57?

这是你想要的吗?

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

查看作为相关问题的答案提供的函数 strfdelta(tdelta, fmt)

这是一个很糟糕但效果很好的解决方案。

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