匹配两个DataFrame的更快方法

时间:2019-02-23 14:34:26

标签: python pandas algorithm dataframe join

我有两个DataFrame,每个DataFrame都有几列,但具有相同的'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]

有可能以更复杂的方式做到吗?对于具有超过10万行的DataFrame,这是非常慢的。

1 个答案:

答案 0 :(得分:0)

诸如merge_asof之类的东西可以解决您的问题吗?

pd.merge_asof(df1, df2, on='timestamp', direction='backward')