int太大,无法在python中转换

问题描述 投票:0回答:1

我有一个从模拟数据中计算出来的'持续时间'值。这只是计算出的'小时'值。 我写了下面的代码。

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)

我无法在实时数据中得到这个 "持续时间 "值。但为了安全起见,我如何解决这个问题?

python dataframe int timedelta
1个回答
0
投票

你在这里使用了一个错误的工具。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))
© www.soinside.com 2019 - 2024. All rights reserved.