int 太大而无法在 python 中转换

int too big to convert in python

我从模拟数据中计算出 'duration' 值。这不过是计算出的 'hours' 值。我写了下面的代码:

Duration = 16571835.2920344
Dyn_ETA = pd.Timedelta(hours=Duration)
Dyn_ETA1 = Dyn_ETA.total_seconds()
hours = Dyn_ETA1/3600
result_Dyn = '{0:02.0f}:{1:02.0f}'.format(*divmod(hours * 60, 60))

但我遇到以下错误:

OverflowError: int too big to convert 
for
Dyn_ETA = pd.Timedelta(hours=Duration)

我不会在实时数据中得到这个 'duration' 值。但作为安全措施,我该如何解决?

您在这里使用了错误的工具。 pd.Timedelta 将持续时间处理为 int64 纳秒值。这或多或少给出了 5124095 小时(大约 584 年)的最大值。

您的初始持续时间接近最大值的两倍,无法用这种方式表示。句号。

但你不需要它:

hour = Duration # taking the total_seconds() from the Timedelta in hour divided by 3600 is a no-op
result_Dyn = '{0:02.0f}:{1:02.0f}'.format(*divmod(hours * 60, 60))