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

Pandas Dataframe中Timedelta类型groupby求mean()返回值异常问题

问题原因

你遇到的异常是旧版本Pandas中Timedelta类型分组聚合的整数溢出Bug:

  • Request_Closing_Time 底层以int64格式存储纳秒级时间差,旧版本Pandas的分组聚合默认走Cython优化路径,求和时如果分组总纳秒数超过int64的最大值(约9.2e18纳秒,折合106天),就会发生整数溢出,结果变为负数,最终计算出的均值也会出现负数、超大天数等异常。
  • 单独对单个分组的Series调用mean()时走的是Python层的计算逻辑,会自动处理溢出问题,所以结果正常。

解决方案

方案1:升级Pandas版本

Pandas 1.3.0及以上版本已经官方修复了该Bug,直接升级即可解决问题:

pip install pandas>=1.3.0

方案2:手动转换类型计算(适配低版本)

如果无法升级Pandas,可以先将Timedelta转为浮点型的总秒数计算均值,再转回Timedelta类型:

by_burrough = nyc_sr_calls_trimmed.groupby(['Borough'])
# 计算每个分组的平均处理时长
mean_close_time = by_burrough['Request_Closing_Time'].apply(
    lambda s: pd.to_timedelta(s.dt.total_seconds().mean(), unit='s')
).dt.floor('s')
print(mean_close_time)

验证方法

可以先打印每个分组的总时长确认溢出问题:

print(by_burrough['Request_Closing_Time'].sum())

如果输出结果包含负的总时长,即可确认是溢出导致的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:06:03