Python Pandas pd.merge_asof:TypeError:' NoneType'对象不可调用

时间:2018-02-06 23:49:11

标签: python pandas merge

我刚刚发现了pandas merge_asof函数并尝试让它工作。下面是一些示例代码,用于重现我看到的错误:

d1 = pd.DataFrame.from_dict({'id':[646327.0, 645714.0, 645462.0],
                             'units1':[1.7723982570833334, 1.7723982570833334, 5.772398257083333]})

d2 = pd.DataFrame.from_dict({'id':[645462.0, 645714.0, 646327.0, 645462.0, 645714.0,
645462.0,
645714.0,
645462.0,
645714.0,
645462.0], 'units2':[0.7723988920833333, 0.7723988920833333, 0.7723988920833333, 3.7723988920833333,
3.7723988920833333,
4.772398892083333,
4.772398892083333,
5.772398892083333,
5.772398892083333,
6.772398892083333]})

当我尝试使用pd.merge_asof:

d3 = pd.merge_asof(d1, d2, by = 'id', left_on = 'units1', right_on = 'units2',
                direction='nearest')

我收到一个错误的非类型错误。任何人都知道这里发生了什么?我的语法不正确吗?

1 个答案:

答案 0 :(得分:3)

我能够通过将id投射到int来解决此问题。

d1['id'] = d1['id'].astype('int')
d2['id'] = d2['id'].astype('int')
d3 = pd.merge_asof(d1, d2, by = 'id', on = 'units', direction='nearest')