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