@@ -458,6 +458,38 @@ def test_merge_na_keys(self):
458
458
459
459
tm .assert_frame_equal (result , expected )
460
460
461
+ def test_merge_na_datetime_keys_empty_df (self ):
462
+ data = [
463
+ [pd .Timestamp ("1950-01-01" ), "A" , 1.5 ],
464
+ [pd .Timestamp ("1950-01-01" ), "B" , 1.5 ],
465
+ [pd .Timestamp ("1950-01-01" ), "B" , 1.5 ],
466
+ [pd .Timestamp ("1950-01-01" ), "B" , np .nan ],
467
+ [pd .Timestamp ("1950-01-01" ), "B" , 4.0 ],
468
+ [pd .Timestamp ("1950-01-01" ), "C" , 4.0 ],
469
+ [pd .Timestamp ("1950-01-01" ), "C" , np .nan ],
470
+ [pd .Timestamp ("1950-01-01" ), "C" , 3.0 ],
471
+ [pd .Timestamp ("1950-01-01" ), "C" , 4.0 ],
472
+ ]
473
+
474
+ frame = DataFrame (data , columns = ["date" , "panel" , "data" ]).set_index (
475
+ ["date" , "panel" ]
476
+ )
477
+
478
+ other_data = []
479
+ other = DataFrame (other_data , columns = ["date" , "panel" , "state" ]).set_index (
480
+ ["date" , "panel" ]
481
+ )
482
+
483
+ expected = DataFrame ([], columns = ["date" , "panel" , "data" , "state" ])
484
+ expected [["date" , "panel" , "data" ]] = frame .reset_index ()[
485
+ ["date" , "panel" , "data" ]
486
+ ]
487
+ expected = expected .set_index (["date" , "panel" ])
488
+
489
+ result = frame .merge (other , how = "left" , on = ["date" , "panel" ])
490
+
491
+ tm .assert_frame_equal (result , expected )
492
+
461
493
@pytest .mark .parametrize ("klass" , [None , np .asarray , Series , Index ])
462
494
def test_merge_datetime_index (self , klass ):
463
495
# see gh-19038
0 commit comments