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

关于Pandas中idxmax()的FutureWarning问题咨询

问题分析与解决

警告原因

这个FutureWarning的核心原因是:pandas计划在后续版本中修改DataFrame.idxmax()的行为——当遇到整行全为NA,或者**存在NA且设置skipna=False**的行时,未来版本会直接抛出ValueError,当前版本仅发出警告提前告知开发者。

你设置skipna=True或False都触发警告,说明你的数据中存在至少一行在指定的columns范围内是全NA值(哪怕其他行完全正常)。当skipna=True时,全NA行的idxmax当前会返回NaN,但未来会报错;当skipna=False时,只要行内有NA就会触发这个弃用提示。

解决方案

1. 定位并处理问题行

先找出哪些行是全NA:

# 筛选出指定列全为NA的行
all_na_rows = df[df[columns].isna().all(axis=1)]
print(all_na_rows)
  • 如果这些行是无效数据,直接删除:
    df = df[~df[columns].isna().all(axis=1)]
    
  • 如果需要保留行,手动给这些行设置默认值:
    mask = df[columns].isna().all(axis=1)
    # 正常计算非全NA行的idxmax
    df.loc[~mask, 'max days'] = df.loc[~mask, columns].idxmax(axis=1)
    # 给全NA行设置自定义默认值(比如None或特定标识)
    df.loc[mask, 'max days'] = None
    

2. 临时屏蔽警告(不推荐,仅过渡用)

如果暂时不想修改数据,可通过warnings模块屏蔽该特定警告:

import warnings
warnings.filterwarnings("ignore", category=FutureWarning, message=r"The behavior of DataFrame.idxmax with all-NA values, or any-NA and skipna=False, is deprecated.*")

注意:屏蔽警告只是权宜之计,建议优先处理数据本身,避免未来pandas版本升级后程序报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 14:13:20