微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用来自另一个数据帧的随机值更新 Pyspark 中的数据帧?

如何解决如何使用来自另一个数据帧的随机值更新 Pyspark 中的数据帧?

我在 pyspark 中有两个数据框,如下所示:

Dataframe A:总共 1000 条记录

+-----+
|Name |
+-----+
|    a|
|    b|
|    c|
+-----+

数据框 B:总共 3 条记录

+-----+
|Zip  |
+-----+
|06905|
|06901|
|06902|
+-----+

我需要在 Dataframe A 中添加一个名为 Zip 的新列,并使用从 Dataframe B 中随机选择的值填充这些值。因此 Dataframe A 将如下所示:

+-----+-----+
|Name |Zip  |
+-----+-----+
|    a|06901|
|    b|06905|
|    c|06902|
|    d|06902|
+-----+-----+

请帮我写这段代码。非常感谢您的帮助。

我在 Azure Databricks 上运行它,显然,quinn 不是其中的一个模块。所以很遗憾不能使用 quinn。

解决方法

您可以使用 zip 聚合数据帧并将值收集到一个数组列中,然后在选择第一个元素之前进行交叉连接并从 zip 数组中选择一个随机元素,例如在数组上使用 shuffle :

public class Car 
{
   public string Name;
   public int Age;
   public JsonDocument GeneralCarInfo;
}
,

如果 b 很小(3 行),您可以将其收集到 Python 列表中,并将其作为数组列添加到 a。然后你可以使用 shuffle 获得一个随机元素。

import pyspark.sql.functions as F

df = a.withColumn(
    'Zip',F.shuffle(
        F.array(*[F.lit(r[0]) for r in b.collect()])
    )[0]
)

df.show()
+----+-----+
|Name|  Zip|
+----+-----+
|   a|06901|
|   b|06905|
|   c|06902|
|   d|06901|
+----+-----+

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?