Skip to content

BUG: Fix nanany/nanall raising ValueError with skipna=False on nullable dtypes#65835

Open
factnn wants to merge 1 commit into
pandas-dev:mainfrom
factnn:fix/nanany-nanall-skipna-nullable
Open

BUG: Fix nanany/nanall raising ValueError with skipna=False on nullable dtypes#65835
factnn wants to merge 1 commit into
pandas-dev:mainfrom
factnn:fix/nanany-nanall-skipna-nullable

Conversation

@factnn

@factnn factnn commented Jun 9, 2026

Copy link
Copy Markdown

Summary

Fixes #65710: DataFrame.any(skipna=False) and DataFrame.all(skipna=False) raise ValueError: cannot convert float NaN to bool on nullable dtypes (boolean, Int*, Float*), while Series.any/all(skipna=False) correctly returns pd.NA.

Root Cause

In nanops.nanany and nanops.nanall, when skipna=False and NA values are present, _get_values preserves NaN values in the array. Then values.astype(bool) tries to convert NaN to bool, which raises ValueError.

Fix

Check for NaN values when skipna=False before attempting astype(bool), and return np.nan directly instead.

Changes

  • pandas/core/nanops.py: 6 lines each in nanany and nanall

Fixes #65710

Co-authored-by: Claude noreply@anthropic.com

…ypes

  When skipna=False and NA values are present (from nullable boolean/integer
  dtypes), nanany and nanall try to convert NaN to bool via astype(bool),
  which raises ValueError. Return NaN directly instead.

  Fixes GH#65710
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BUG: DataFrame.any/all(skipna=False) raises ValueError instead of returning NA

1 participant