-
-
Notifications
You must be signed in to change notification settings - Fork 18k
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
Fix insertion of None value in MultiIndex #59069
Conversation
b026334
to
efff668
Compare
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.
Is it possible to also include other NaN in this fix? I think inserting np.nan
would cause this bug too.
doc/source/whatsnew/v3.0.0.rst
Outdated
@@ -543,6 +543,7 @@ MultiIndex | |||
^^^^^^^^^^ | |||
- :func:`DataFrame.loc` with ``axis=0`` and :class:`MultiIndex` when setting a value adds extra columns (:issue:`58116`) | |||
- :meth:`DataFrame.melt` would not accept multiple names in ``var_name`` when the columns were a :class:`MultiIndex` (:issue:`58033`) | |||
- :meth:`MultiIndex.insert` would not insert None value correctly at unified location of index -1 (:issue:`59003`) |
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.
- :meth:`MultiIndex.insert` would not insert None value correctly at unified location of index -1 (:issue:`59003`) | |
- :meth:`MultiIndex.insert` would not insert ``None`` value correctly at unified location of index -1 (:issue:`59003`) |
nitpick
pandas/tests/test_multilevel.py
Outdated
def test_multiindex_insert_level_with_na(self): | ||
# GH 59003 | ||
indices = [["one"], ["a"], ["yes"]] | ||
df = DataFrame([0], index=indices).T |
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.
Could you construct this without .T
?
pandas/tests/test_multilevel.py
Outdated
df = DataFrame([0], index=indices).T | ||
df["one", None, "yes"] = 1 | ||
expected = DataFrame([1], index=Index(["yes"])).T | ||
tm.assert_frame_equal(df["one"][None], expected) |
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.
Could you test this without doing a chained indexing?
pandas/tests/test_multilevel.py
Outdated
df["one", None, "yes"] = 1 | ||
expected = DataFrame([1], index=Index(["yes"])).T | ||
tm.assert_frame_equal(df["one"][None], expected) | ||
df["one", np.nan, "yes"] = 1 |
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 you use pytest.mark.parametrize
with np.nan
and None
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.
Cool! I tried to stay close to the reproducible code example in the linked issue, but it's really not necessary. Now the test case looks more concise and to the point. Thanks for the suggestions.
Thanks @chaoyihu |
doc/source/whatsnew/v3.0.0.rst
file if fixing a bug or adding a new feature.