File tree 3 files changed +19
-2
lines changed
3 files changed +19
-2
lines changed Original file line number Diff line number Diff line change @@ -358,7 +358,7 @@ Bug Fixes
358
358
359
359
360
360
361
-
361
+ - Bug in ``pd.merge_asof()`` where ``left_index``/``right_index`` together caused a failure when ``tolerance`` was specified (:issue:`15135`)
362
362
363
363
364
364
Original file line number Diff line number Diff line change @@ -1129,7 +1129,11 @@ def _get_merge_keys(self):
1129
1129
# validate tolerance; must be a Timedelta if we have a DTI
1130
1130
if self .tolerance is not None :
1131
1131
1132
- lt = left_join_keys [- 1 ]
1132
+ if self .left_index :
1133
+ lt = self .left .index
1134
+ else :
1135
+ lt = left_join_keys [- 1 ]
1136
+
1133
1137
msg = "incompatible tolerance, must be compat " \
1134
1138
"with type {0}" .format (type (lt ))
1135
1139
Original file line number Diff line number Diff line change @@ -518,6 +518,19 @@ def test_tolerance_tz(self):
518
518
'value2' : list ("BCDEE" )})
519
519
assert_frame_equal (result , expected )
520
520
521
+ def test_index_tolerance (self ):
522
+ # GH 15135
523
+ expected = self .tolerance .set_index ('time' )
524
+ trades = self .trades .set_index ('time' )
525
+ quotes = self .quotes .set_index ('time' )
526
+
527
+ result = pd .merge_asof (trades , quotes ,
528
+ left_index = True ,
529
+ right_index = True ,
530
+ by = 'ticker' ,
531
+ tolerance = pd .Timedelta ('1day' ))
532
+ assert_frame_equal (result , expected )
533
+
521
534
def test_allow_exact_matches (self ):
522
535
523
536
result = merge_asof (self .trades , self .quotes ,
You can’t perform that action at this time.
0 commit comments