pandas merge_asof: ambiguous argument types error

Viewed 4642

I'm trying to use merge_asof from Pandas and I've been getting the error:

TypeError: Function call with ambiguous argument types

Reproducible example:

import pandas as pd

a = pd.DataFrame({'foo': [1., 2.], 'bar': ['2019-01-01 00:00:10', '2019-01-01 00:00:20']})
b = pd.DataFrame({'foo': [2., 5.], 'baz': ['2019-01-01 00:00:05', '2019-01-01 00:00:25']})
a['bar'] = pd.to_datetime(a['bar'])
b['baz'] = pd.to_datetime(b['baz'])

pd.merge_asof(a,
              b,
              left_on='bar',
              right_on='baz',
              direction='backward',
              by='foo',
              allow_exact_matches=False)

I've tried to inspect the pandas.core.reshape.merge file but had no luck solving the problem

2 Answers

The "By" variable must not be float.

It can be "integer" or "string".

Problem of pd.merge_asof( left, right, on=None,by=None) is due to "ON" parameter. It must be of date type otherwise it will throw error of ambiguous argument type.so we need to convert them to pandas datetime objects using pd.to_datetime() to solve the error.

enter image description here

Related