Skip to content

Commit e5045f3

Browse files
committed
changed 1.2 release notes and added right/left tests
1 parent fe1335e commit e5045f3

File tree

2 files changed

+52
-45
lines changed

2 files changed

+52
-45
lines changed

doc/source/whatsnew/v1.2.0.rst

+1-10
Original file line numberDiff line numberDiff line change
@@ -365,15 +365,6 @@ Performance improvements
365365

366366
.. ---------------------------------------------------------------------------
367367
368-
.. _whatsnew_120.regressions:
369-
370-
Fixed regressions
371-
~~~~~~~~~~~~~~~~~
372-
- Fixed regression in :func:`merge` on merging datetime index with empty DF (:issue:`36895`)
373-
374-
.. ---------------------------------------------------------------------------
375-
376-
377368
.. _whatsnew_120.bug_fixes:
378369

379370
Bug fixes
@@ -475,7 +466,7 @@ MultiIndex
475466

476467
- Bug in :meth:`DataFrame.xs` when used with :class:`IndexSlice` raises ``TypeError`` with message ``"Expected label or tuple of labels"`` (:issue:`35301`)
477468
- Bug in :meth:`DataFrame.reset_index` with ``NaT`` values in index raises ``ValueError`` with message ``"cannot convert float NaN to integer"`` (:issue:`36541`)
478-
-
469+
- Fixed regression in :func:`merge` on merging DatetimeIndex with empty DataFrame (:issue:`36895`)
479470

480471
I/O
481472
^^^

pandas/tests/reshape/merge/test_multi.py

+51-35
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import numpy as np
22
from numpy.random import randn
3-
import pytest
4-
53
import pandas as pd
64
from pandas import DataFrame, Index, MultiIndex, Series
75
import pandas._testing as tm
86
from pandas.core.reshape.concat import concat
97
from pandas.core.reshape.merge import merge
8+
import pytest
109

1110

1211
@pytest.fixture
@@ -482,6 +481,56 @@ def test_merge_datetime_index(self, klass):
482481
result = df.merge(df, on=[df.index.year], how="inner")
483482
tm.assert_frame_equal(result, expected)
484483

484+
def test_merge_datetime_multi_index_empty_df(self):
485+
486+
midx1 = pd.MultiIndex.from_tuples(
487+
[[pd.Timestamp("1950-01-01"), "A"], [pd.Timestamp("1950-01-02"), "B"]],
488+
names=["date", "panel"],
489+
)
490+
left = DataFrame(
491+
data={
492+
"data": [1.5, 1.5],
493+
},
494+
index=midx1,
495+
)
496+
497+
midx2 = pd.MultiIndex.from_tuples([], names=["date", "panel"])
498+
499+
right = DataFrame(index=midx2, columns=["state"])
500+
501+
midx3 = pd.MultiIndex.from_tuples(
502+
[[pd.Timestamp("1950-01-01"), "A"], [pd.Timestamp("1950-01-02"), "B"]],
503+
names=["date", "panel"],
504+
)
505+
506+
expected_left_merge = DataFrame(
507+
data={
508+
"data": [1.5, 1.5],
509+
"state": [None, None],
510+
},
511+
index=midx3,
512+
)
513+
514+
expected_right_merge = DataFrame(
515+
data={
516+
"state": [None, None],
517+
"data": [1.5, 1.5],
518+
},
519+
index=midx3,
520+
)
521+
522+
result_left_merge = left.merge(right, how="left", on=["date", "panel"])
523+
tm.assert_frame_equal(result_left_merge, expected_left_merge)
524+
525+
result_right_merge = right.merge(left, how="right", on=["date", "panel"])
526+
tm.assert_frame_equal(result_right_merge, expected_right_merge)
527+
528+
result_left_join = left.join(right, how="left")
529+
tm.assert_frame_equal(result_left_join, expected_left_merge)
530+
531+
result_right_join = right.join(left, how="right")
532+
tm.assert_frame_equal(result_right_join, expected_right_merge)
533+
485534
def test_join_multi_levels(self):
486535

487536
# GH 3662
@@ -837,36 +886,3 @@ def test_join_multi_wrong_order(self):
837886
)
838887

839888
tm.assert_frame_equal(result, expected)
840-
841-
842-
def test_merge_datetime_index_empty_df():
843-
844-
midx1 = pd.MultiIndex.from_tuples(
845-
[[pd.Timestamp("1950-01-01"), "A"], [pd.Timestamp("1950-01-02"), "B"]],
846-
names=["date", "panel"],
847-
)
848-
frame = DataFrame(
849-
data={
850-
"data": [1.5, 1.5],
851-
},
852-
index=midx1,
853-
)
854-
855-
midx2 = pd.MultiIndex.from_tuples([], names=["date", "panel"])
856-
857-
other = DataFrame(index=midx2, columns=["state"])
858-
859-
midx3 = pd.MultiIndex.from_tuples(
860-
[[pd.Timestamp("1950-01-01"), "A"], [pd.Timestamp("1950-01-02"), "B"]],
861-
names=["date", "panel"],
862-
)
863-
864-
expected = DataFrame(
865-
data={
866-
"data": [1.5, 1.5],
867-
"state": [None, None],
868-
},
869-
index=midx3,
870-
)
871-
result = frame.merge(other, how="left", on=["date", "panel"])
872-
tm.assert_frame_equal(result, expected)

0 commit comments

Comments
 (0)