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

pandas 1.3.3中全pd.NaT行调用idxmax行为与旧版本不一致问题

pandas全NaT行调用idxmax抛出异常问题解答

这是pandas 1.3.0到1.3.3版本的已知bug,不属于操作错误。

问题原因

该问题是pandas 1.3版本迭代时,重构datetime类型相关聚合逻辑的过程中,遗漏了全NaT行/列在idxmax/idxmin方法中的边界处理场景,和float类型全NaN序列的处理逻辑不一致,违反了官方文档中「全空序列调用idxmax返回NaN」的约定。

解决方案

你可以根据使用场景选择以下任意一种方式规避问题:

  • 临时降级到pandas 1.2.4版本,等待后续稳定版本修复后再升级
  • 调用idxmax前对数据做兼容处理,示例代码如下:
import pandas as pd
import numpy as np

df2 = pd.DataFrame({'a': [pd.NaT], 'b': [pd.NaT]})
# 先将NaT替换为极小时间值计算idxmax,再把全空行的结果替换回NaN
res = df2.replace(pd.NaT, pd.Timestamp.min).idxmax(axis=1)
res[df2.isna().all(axis=1)] = np.nan
print(res)
  • 升级到pandas 1.3.4及以上版本,该bug已经在后续补丁版本中被修复,全NaT行调用idxmax会和全NaN浮点行表现一致,返回预期的NaN值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:57:03