亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PySpark:按其他表中的子字符串過濾數據幀

PySpark:按其他表中的子字符串過濾數據幀

阿波羅的戰車 2023-10-26 15:35:36
我有兩個數據框,a 和 b:A:+-----+---------+| word|frequency|+-----+---------+|  git|        5||stack|       10||match|       15||other|        3|+-----+---------+乙:+-------------+---------+|         word|frequency|+-------------+---------+|       github|        5||       match |        2||stackoverflow|       10||      b_entry|        7|+-------------+---------+我想過濾掉數據幀 a 中單詞列等于或 b 中任何行的子字符串的所有行,因此所需的輸出是:+-----+---------+| word|frequency|+-----+---------+|other|        3|+-----+---------+我知道有一些函數 a.word.contains()、a.word.like()、a.word.rlike() 等可以幫助我測試 a.word 是否有子字符串的條件。這些問題是我最終會得到包含 a.word 值的 b 行,而不是 b.word 包含的 a 行。是否有任何函數可以幫助測試 a.word 是否是另一個表的子字符串?理想情況下,解決方案能夠同時對兩個表進行操作,而不是直接迭代值,例如 SQL Join。
查看完整描述

1 回答

?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

contains()在連接條件中使用withleft_anti作為連接類型。

左反連接返回第一個表中與第二個表中不匹配的所有行。


df_a.show()

+-----+---------+                                                               

| word|frequency|

+-----+---------+

|  git|        5|

|stack|       10|

|match|       15|

|other|        3|

+-----+---------+

df_b.show()

+-------------+-----------+

|       word_1|frequency_1|

+-------------+-----------+

|       github|          5|

|        match|          2|

|stackoverflow|         10|

|      b_entry|          7|

+-------------+-----------+

from pyspark.sql.functions import *


df_a.join(df_b, (df_b.word_1.contains(df_a.word)), "left_anti").show()

+-----+---------+

| word|frequency|

+-----+---------+

|other|        3|

+-----+---------+



查看完整回答
反對 回復 2023-10-26
  • 1 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號