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

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

根據(jù)匹配值(到某個小數(shù)點)加入兩個pyspark數(shù)據(jù)框

根據(jù)匹配值(到某個小數(shù)點)加入兩個pyspark數(shù)據(jù)框

慕的地6264312 2023-02-22 16:01:01
我在 pyspark 中有兩個數(shù)據(jù)框:df1+-------+--------+----------------+-------------+                               |new_lat|new_long|        lat_long|   State_name|+-------+--------+----------------+-------------+|  33.64| -117.63|[33.64,-117.625] |STATE 1     ||  23.45| -101.54|[23.45,-101.542] |STATE 2     |+-------+--------+----------------+-------------+df2+---------+-----+--------------------+----------+------------+|    label|value|            dateTime|       lat|        long|+---------+-----+--------------------+----------+------------+|msg      |  437|2019-04-06T05:10:...|33.6436263|-117.6255508||msg      |  437|2019-04-06T05:10:...|33.6436263|-117.6255508||msg      |  437|2019-04-06T05:10:...| 23.453622|-101.5423864||msg      |  437|2019-04-06T05:10:...| 23.453622|-101.5420964|我想根據(jù)匹配的 lat,long 值加入這兩個表,最多 2 個小數(shù)點。所以我想要的輸出數(shù)據(jù)框是:DF3+---------+-----+--------------------+----------+------------+------+|    label|value|            dateTime|       lat|        long|state |+---------+-----+--------------------+----------+------------+-------|msg      |  437|2019-04-06T05:10:...|33.6436263|-117.6255508|STATE 1|msg      |  437|2019-04-06T05:10:...|33.6436263|-117.6255508|STATE 1|msg      |  437|2019-04-06T05:10:...| 23.453622|-101.5423864|STATE 2|msg      |  437|2019-04-06T05:10:...| 23.453622|-101.5420964|STATE 2考慮到 df2 有超過 100M 行,我怎樣才能有效地做到這一點。我試過df3=df1.join(df2, df1. new_lat == df2. lat, 'left')但不確定如何在 df1 中考慮最多兩位小數(shù)
查看完整描述

2 回答

?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗 獲得超5個贊

substring在您的加入條件中使用。

df3=df1.join(df2, df1.new_lat == substring(df2.lat,1,5), 'left')


查看完整回答
反對 回復(fù) 2023-02-22
?
胡子哥哥

TA貢獻(xiàn)1825條經(jīng)驗 獲得超6個贊

substring絕對是最簡單的實現(xiàn),但并不總能為您提供所需的準(zhǔn)確性(想想 0.5 的整數(shù)舍入)。


為了獲得更好的準(zhǔn)確性,您可以使用快速過濾器:


threshold = 0.01


df3 = (

    df1

    .join(df2)

    .filter(df1.new_lat - threshold < df2.lat)

    .filter(df2.lat < df1.new_lat + threshold)

)


查看完整回答
反對 回復(fù) 2023-02-22
  • 2 回答
  • 0 關(guān)注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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