2016-12-14 4 views
0

У меня есть два кадра данных со столбцами времени и столбцами значений, df1 и df2. df1 - форма [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']] 

Это работает, но занимает очень много времени. Как и в, несколько часов для кадра данных, который составляет 30 миллионов строк.

Есть ли более эффективный способ сделать это?

ответ