【问题标题】:Filter A Dataframe Column based on the the values of another column [duplicate]根据另一列的值过滤数据框列[重复]
【发布时间】:2018-07-16 13:16:50
【问题描述】:

假设我有两个数据框,

   **A**                   **B**

| a | b | c |                |a|

| 1 | 2 | 3 |                |1|

我想根据数据集B的a列中的值过滤数据框A的内容。SQL中等效的where子句是这样的

WHERE NOT (A.a in (select a from B)

我怎样才能做到这一点?

【问题讨论】:

  • 抱歉,我找不到那个欺骗目标。

标签: python apache-spark pyspark


【解决方案1】:

要保留左侧表中右侧匹配的所有行,您可以使用leftsemi 连接。在这种情况下,您只想在右表中匹配时保留值,在这种情况下,您可以使用leftanti 连接:

df = spark.createDataFrame([(1,2,3),(2,3,4)], ["a","b","c"])
df2 = spark.createDataFrame([(1,2)], ["a","b"])

df.join(df2,'a','leftanti').show()

df

+---+---+---+
|  a|  b|  c|
+---+---+---+
|  1|  2|  3|
|  2|  3|  4|
+---+---+---+

df2

+---+---+
|  a|  b|
+---+---+
|  1|  2|
+---+---+

结果

+---+---+---+
|  a|  b|  c|
+---+---+---+
|  2|  3|  4|
+---+---+---+

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-12
    • 2020-11-16
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2015-12-02
    • 1970-01-01
    相关资源
    最近更新 更多