我有两个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,这是非常慢的。
答案 0 :(得分:0)
诸如merge_asof之类的东西可以解决您的问题吗?
pd.merge_asof(df1, df2, on='timestamp', direction='backward')