merge_asof(left_index=True, right_on=...) overwrites left index with right index · Issue #33463 · pandas-dev/pandas (original) (raw)

Building from an example in the docs...

left = pd.DataFrame({'left_val': ['a', 'b', 'c'], 'left_time': [1, 5, 10]}, index=[1, 5, 10])
right = pd.DataFrame({'right_val': [1, 2, 3, 6, 7]}, index=[1, 2, 3, 6, 7])
>>> pd.merge_asof(left, right, left_index=True, right_index=True)
   left_val  left_time  right_val
1         a          1          1
5         b          5          3
10        c         10          7

Returned index is the index of left.

>>> pd.merge_asof(left, right, left_on='left_time', right_index=True)
   left_val  left_time  right_val
1         a          1          1
5         b          5          3
10        c         10          7

Returned index is the index of left.

>>> pd.merge_asof(left, right, left_on='left_time', right_on='right_val')
  left_val  left_time  right_val
0        a          1          1
1        b          5          3
2        c         10          7

Return value has index reset (I assume expected?)

>>> pd.merge_asof(left, right, left_index=True, right_on='right_val')
  left_val  left_time  right_val
1        a          1          1
3        b          5          3
7        c         10          7

Returned index is the index of right.

Perhaps I'm misunderstanding something about how this is supposed to work, but it seems to me that the behavior in the last example is incorrect.