более быстрый способ сопоставления двух фреймов данных - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть два DataFrames, каждый с несколькими столбцами, но с одним и тем же столбцом timestamp (временные метки различны в каждом DataFrame).Я хотел бы объединить их с условием, что строка с определенной отметкой времени в DataFrame1 будет соединена со строкой из DataFrame2 с максимальной отметкой времени, меньшей или равной отметке времени в строке из DataFrame1.Я хотел бы сделать это быстрее, чем это:

df1['ask'], df1['bid'] = zip(*df1['timestamp'].apply(mm.join_with_data, args=(df2,)))

где

def join_with_data(df1, df2):
temp = df2[df2.timestamp == max(df2.timestamp[df2.timestamp <= df1])]

return temp.values[0][0], temp.values[0][1]

Возможно ли сделать это более изощренным способом?Это довольно медленно для DataFrames с более чем 100 тыс. Строк.

1 Ответ

0 голосов
/ 23 февраля 2019

Что-то вроде merge_asof решит вашу проблему?

pd.merge_asof(df1, df2, on='timestamp', direction='backward')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...