-
-
Notifications
You must be signed in to change notification settings - Fork 17.6k
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
BUG: MultiIndex.putmask losing ea dtype #49847
Conversation
@@ -162,6 +162,34 @@ def test_putmask_multiindex_other(self): | |||
expected = MultiIndex.from_tuples([right[0], right[1], left[2]]) | |||
tm.assert_index_equal(result, expected) | |||
|
|||
def test_putmask_keep_dtype(self, any_numeric_ea_dtype): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are the two test cases also covering for the all-nan case in #49830 (comment) or do you think it's not necessary?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's about losing the dtype, so yes this covers the all nan case. But this does not fix the issue yet
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The variable might be a misnomer then any_numeric_ea_dtype
(if it covers all nans, this would also include non EA dtype).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It covers the case in a sense that the current tests represent the all nan case as well, I’ll add a specific test when actually fixing the issue anyway
pandas/core/indexes/multi.py
Outdated
zip(subset.levels, self.levels, self.codes) | ||
): | ||
new_elements = value_level.difference(level) | ||
new_level = level.append(new_elements) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can the two lines above be replaced with new_level = level.union(value_level)
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point, was thinking about duplicates when implementing this, but levels are unique…
failure unrelated |
Thanks @phofl |
* BUG: MultiIndex.putmask losing ea dtype * Fix typing * Add asv * Simplify and add whatsnew
combine_first()
coerces toobject
forMultiIndex
and all-nan index columns #49830 (Replace xxxx with the GitHub issue number)doc/source/whatsnew/vX.X.X.rst
file if fixing a bug or adding a new feature.This is something we have to fix before we can address the issue
Its also significantly faster