在熊猫中加快最接近的日期合并?

时间:2016-12-14 17:27:48

标签: python performance pandas numpy merge

我有两个包含时间列和值列的数据框,df1df2df1形状为[30000000 x 20]df2形状为[400 x 20]。我需要在df1中创建一个新列,其中包含来自df2中距离最近的行df2的值。这就是我的做法:

    df2= df2.sort_values(by='time_col').reset_index(drop=True)

    df1['closest'] = np.searchsorted(df2['time_col'].values, df1['time_col'].values)
    df1['new_values'] = [df2.loc[x, 'value_col'] for x in sales['closest']]

这有效,但需要很长时间。对于一个3000万行的数据框,需要几个小时。

有更有效的方法吗?

1 个答案:

答案 0 :(得分:1)

伙计,只需使用Pandas 19.0和新的惊人merge as_of时间序列

http://pandas.pydata.org/pandas-docs/stable/merging.html#merging-asof