Skip to content

Fix alignment in Series subtraction with MultiIndex, Index and NaN values (#60908) #61381

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

rit4rosa
Copy link

@rit4rosa rit4rosa commented Apr 30, 2025

This pull request fixes #60908 , where subtracting a Series with a MultiIndex containing NaN values from a Series with a regular Index could lead to incorrect results or unexpected behavior.

The issue was caused by the _align_for_op method not properly handling cases where the left-hand Series had a MultiIndex and the right-hand side had a flat Index, especially when NaN values were present. This could lead to misalignment during arithmetic operations.

To fix this, the _align_for_op method was updated to:

  • Ensure that when the left Series has a MultiIndex and the right Series has a regular Index, the right Series is properly reindexed based on the first level of the left-hand MultiIndex, even when NaN values are involved.

  • Correctly handle cases where either Series is empty.

Additionally, a new test test_series_subtraction_with_nan_and_levels (added in test_subtraction_nanindex) was introduced to verify that:

  • Subtracting a Series with a MultiIndex (including NaNs) from a regular Index works correctly.

  • The result maintains the correct alignment and expected output values.

Fixes an issue where subtracting a Series with a MultiIndex containing
NaN values from a regular Index Series led to incorrect results.
Updated _align_for_op to properly reindex right-hand Series based on
the first level of the MultiIndex and handle empty Series cases.

Added test_subtraction_nanindex to ensure correct behavior.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant