python - PySpark 在 GroupBy 之后加入

标签 python join pyspark group-by pyspark-dataframes

我有两个数据框,我想做的是按组/分区加入它们。我如何在 PySpark 中执行此操作?

第一个 df 包含 3 个时间序列,由一个 id、一个时间戳和一个值标识。注意到时间序列包含一些间隙(缺失天数)

enter image description here

第二个 df 包含一个没有间隙的时间序列

enter image description here

我想要达到的结果是

enter image description here

最佳答案

Left join 在第二个 df 上使用 coalesce 将适用于这种情况。

示例:

df.show()
#---+--------+-----+
#tag|      ts|value|
#---+--------+-----+
#  a|01-01-19|   45|
#  a|03-01-19|   89|
#  a|04-01-19|   24|
#  a|05-01-19|  778|
#---+--------+-----+

df1.show()
#+--------+
#|      ts|
#+--------+
#|01-01-19|
#|02-01-19|
#|03-01-19|
#|04-01-19|
#|05-01-19|
#+--------+

df1.alias("t1").join(df.alias("t2"),col("t1.ts")==col("t2.ts"),"left").\
selectExpr("coalesce(t1.ts,t2.ts) as ts","tag","value").\
orderBy("ts").\
show()

#+--------+----+-----+
#|      ts| tag|value|
#+--------+----+-----+
#|01-01-19|   a|   45|
#|02-01-19|null| null|
#|03-01-19|   a|   89|
#|04-01-19|   a|   24|
#|05-01-19|   a|  778|
#+--------+----+-----+

关于python - PySpark 在 GroupBy 之后加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60933697/

相关文章:

python - Python 中的反向 repr 函数

javascript - django ajax表单提交for循环中的多个值

ruby-on-rails - Rails PG::UndefinedColumn:错误:列 carts_parts.[:part_id, :cart_id] 不存在

mysql - 获取多连接中的行数

mysql - 连接 MySQL 表上的多个列

python - 使用 Pyspark 查询数据框中的 json 对象

python - 如何在 django 1.6 上安装 django-cms 3

python - 从 Python 到 Azure 的 REST API 调用问题

python - Spark(Python)中的 Kolmogorov Smirnov 测试不起作用?

python - 使用带有两个参数的 lambda 函数映射的 Spark RDD 有什么问题?