为了账号安全,请及时绑定邮箱和手机立即绑定

根据匹配值(到某个小数点)加入两个pyspark数据框

根据匹配值(到某个小数点)加入两个pyspark数据框

慕的地6264312 2023-02-22 16:01:01
我在 pyspark 中有两个数据框: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|我想根据匹配的 lat,long 值加入这两个表,最多 2 个小数点。所以我想要的输出数据框是: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 中考虑最多两位小数
查看完整描述

2 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

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

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


查看完整回答
反对 回复 2023-02-22
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

substring绝对是最简单的实现,但并不总能为您提供所需的准确性(想想 0.5 的整数舍入)。


为了获得更好的准确性,您可以使用快速过滤器:


threshold = 0.01


df3 = (

    df1

    .join(df2)

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

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

)


查看完整回答
反对 回复 2023-02-22
  • 2 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号