gpt4 book ai didi

python - 根据列减去2个pyspark数据帧

转载 作者:行者123 更新时间:2023-11-30 22:04:21 25 4
gpt4 key购买 nike

我有 2 个 pyspark 数据框,

i
+---+-----+
| ID|COL_A|
+---+-----+
| 1| 123|
| 2| 456|
| 3| 111|
| 4| 678|
+---+-----+
j
+----+-----+
|ID_B|COL_B|
+----+-----+
| 2| 456|
| 3| 111|
| 4| 876|
+----+-----+

我正在尝试根据特定列的值(即 COL_A 中存在的值)从 j 中减去 i i 不应出现在 jCOL_B 中。

预期输出应该是,

diff
+---+-----+
| ID|COL_A|
+---+-----+
| 1| 123|
| 4| 678|
+---+-----+

这是我的代码,

common = i.join(j.withColumnRenamed('COL_B', 'COL_A'), ['COL_A'], 'leftsemi')
diff = i.subtract(common)
diff.show()

但是输出错误,

diff
+---+-----+
| ID|COL_A|
+---+-----+
| 2| 456|
| 1| 123|
| 4| 678|
| 3| 111|
+---+-----+

我在这里做错了什么吗?提前致谢。

最佳答案

尝试:

left_join = i.join(j, j.COL_B == i.COL_A,how='left')
left_join.filter(left_join.COL_A.isNull()).show()

如果您将列名称作为参数,您可以这样做:

left_join = i.join(j, j[colb] == i[cola],how='left')
left_join.filter(left_join[cola].isNull()).show()

关于python - 根据列减去2个pyspark数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53319152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com