根据另一列的值过滤数据框列[重复]

Posted

技术标签:

【中文标题】根据另一列的值过滤数据框列[重复]【英文标题】: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)

我怎样才能做到这一点?

【问题讨论】:

抱歉,我找不到那个欺骗目标。 【参考方案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|
+---+---+---+

希望这会有所帮助!

【讨论】:

以上是关于根据另一列的值过滤数据框列[重复]的主要内容,如果未能解决你的问题,请参考以下文章

熊猫通过根据另一列的值添加列级别来重塑数据框[重复]

根据另一列中的值删除一列的重复项,Python,Pandas

基于针对另一列的参考表更新 Pandas 数据框列的问题

根据由另一列分组的不同列的最大值获取值[重复]

如何根据火花DataFrame中另一列的值更改列的值

根据火花数据框中另一列的值查找列的最大值?