如何解决如何使用来自另一个数据帧的随机值更新 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 举报,一经查实,本站将立刻删除。