【问题标题】:faster way to match two DataFrames匹配两个 DataFrame 的更快方法
【发布时间】:2019-02-23 14:34:26
【问题描述】:

我有两个 DataFrame,每个 DataFrame 都有几列,但具有相同的列“时间戳”(每个 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]

是否有可能以更复杂的方式做到这一点?对于超过 100k 行的 DataFrame,速度非常慢。

【问题讨论】:

    标签: python pandas algorithm dataframe join


    【解决方案1】:

    merge_asof 之类的内容能解决您的问题吗?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 2021-08-15
      • 2011-09-25
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多