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

如何修复int64加法溢出问题?Pandas日期计算报错处理

解决Overflow in int64 addition错误

问题出在你num_days列里的48357555天——这个数值太大了,超出了pandas基于datetime64[ns]能处理的时间范围(numpy的datetime64[ns]仅能表示1677年到2262年之间的日期)。把这么多天加到任意采样日期上,都会触发整数溢出。

修复步骤:

  • 先过滤/处理这种异常大的天数(业务场景里这么大的时间跨度通常没有实际意义)
  • 再执行日期计算逻辑

修改后的代码:

import pandas as pd
import numpy as np

# 转换采样日期
df['sampling_date'] = pd.to_datetime(df['sampling_date'], errors='coerce')

# 设定合理的最大天数(对应datetime64[ns]的最大可表示日期,约146097天)
max_valid_days = 146097

# 标记无效天数:超过阈值或<=0的设为NaN
df['valid_num_days'] = np.where(
    (df['num_days'] > max_valid_days) | (df['num_days'] <= 0),
    np.nan,
    df['num_days']
)

# 计算未来日期,无效天数会得到NaN
df['future_date'] = df['sampling_date'] + pd.to_timedelta(df['valid_num_days'], unit='D')

# 格式转换并替换无效值为0
df['future_date'] = np.where(
    df['valid_num_days'].isna(),
    '0',
    df['future_date'].dt.strftime('%Y-%m-%d')
)

# 清理临时列(可选)
df.drop('valid_num_days', axis=1, inplace=True)

补充说明:

  1. max_valid_days是根据numpy datetime64[ns]的最大可表示日期(2262-04-11)计算得出的,你可以根据业务需求自行调整阈值
  2. 如果确实需要处理超大天数,可考虑使用pandas.Period类型,但该类型在后续日期操作中存在较多限制,非特殊场景不推荐使用

内容的提问来源于stack exchange,提问作者Bharti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 01:45:09