第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

過濾pyspark DataFrame,其中行在另一個DataFrame的范圍內(nèi)

過濾pyspark DataFrame,其中行在另一個DataFrame的范圍內(nèi)

我想從一個 DataFrame ( df1) 中檢索所有行,使其id在id另一個 DataFrame ( df2)列中的任何值的 +- 10 以內(nèi)。例子:df1.show()#+-----+---+#| word| id|#+-----+---+#|apple| 10|#|  cat| 30|#+-----+---+ df2.show()#+----+---+#|word| id|#+----+---+#|some| 50|#|jeff|  3|#| etc|100|#+----+---+預(yù)期結(jié)果:+-----+---+| word| id|+-----+---+|apple| 10|+-----+---+這是因?yàn)?quot;apple"在 10 以內(nèi)"jeff"。如您所見,如果idindf1滿足任何idin的條件,則行是好的df2。兩個 DataFrame 的長度也不一定相同。我已經(jīng)很清楚如何為精確匹配做類似 anisin或 an 的事情antijoin,但我不清楚這個更寬松的情況。編輯:我的一個新想法是,如果沒有預(yù)先構(gòu)建或干凈的方法來做到這一點(diǎn),那么如果它們是可并行的,則可能支持基于已定義函數(shù)的復(fù)雜過濾。如果我找到朝那個方向的方法,我將開始沿著那條谷歌路徑進(jìn)行更新。編輯:到目前為止,我偶然發(fā)現(xiàn)了udf函數(shù),但我還沒有設(shè)法讓它工作。我想我需要讓它以某種方式接受一列而不是單個數(shù)字。這是我到目前為止所擁有的..columns = ['word', 'id']vals = [     ("apple",10),     ("cat",30)]df1 = sqlContext.createDataFrame(vals, columns)vals = [     ("some",50),     ("jeff",3),     ("etc",100)]df2 = sqlContext.createDataFrame(vals, columns)def inRange(id1,id2,delta):    id1 = int(id1)    id2 = int(id2)    return id1>=id2-delta and id1<=id2+deltainRangeUDF = udf(inRange,BooleanType())df1.filter(inRangeUDF(df1.id,df2.id, 10)).show()這當(dāng)前拋出錯誤TypeError: Invalid argument, not a string or column: 10 of type <class 'int'>. For column literals, use 'lit', 'array', 'struct' or 'create_map' function.
查看完整描述

1 回答

  • 1 回答
  • 0 關(guān)注
  • 411 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號