代码之家  ›  专栏  ›  技术社区  ›  Harrison

基于Spark数据帧的API中的多列过滤

  •  2
  • Harrison  · 技术社区  · 7 年前

    我有一个数据帧,如:

    +--------+-------+--------------------+-------------------+
    |     id1|    id2|                body|         created_at|
    +--------+-------+--------------------+-------------------+
    |1       |      4|....................|2017-10-01 00:00:05|
    |2       |      3|....................|2017-10-01 00:00:05|
    |3       |      2|....................|2017-10-01 00:00:05|
    |4       |      1|....................|2017-10-01 00:00:05|
    +--------+-------+--------------------+-------------------+
    

    id1 id2 . 例如,获取行,其中 id1=1, id2=4 id1=2, id2=3 .

    df.filter() ((id1 = 1) and (id2 = 4)) or ((id1 = 2) and (id2 = 3)) . 只是想知道是否有更合适的方法来实现这一点?

    1 回复  |  直到 7 年前
        1
  •  1
  •   MaxU - stand with Ukraine    7 年前

    您可以生成助手DF(表):

    tmp:

    +--------+-------+
    |     id1|    id2|
    +--------+-------+
    |1       |      4|
    |2       |      3|
    +--------+-------+
    

    然后加入他们:

    SELECT a.*
    FROM tab a
    JOIN tmp b
      ON (a.id1 = b.id1 and a.id2 = b.id2)
    

    哪里 tab 是您的原始DF,注册为表格