在pyspark中将值随机更改为空值的最有效方法是啥?

Posted

技术标签:

【中文标题】在pyspark中将值随机更改为空值的最有效方法是啥?【英文标题】:What is the most efficient way to randomly change values into null values in pyspark?在pyspark中将值随机更改为空值的最有效方法是什么? 【发布时间】:2020-09-18 13:39:03 【问题描述】:

试图弄清楚如何用空值随机替换 Pyspark 中的特定列。所以改变一个这样的数据框:

| A  | B  |
|----|----|
| 1  | 2  |
| 3  | 4  |
| 5  | 6  |
| 7  | 8  |
| 9  | 10 |
| 11 | 12 |

并随机将“B”列中 25% 的值更改为空值:

| A  | B    |
|----|------|
| 1  | 2    |
| 3  | NULL |
| 5  | 6    |
| 7  | NULL |
| 9  | NULL |
| 11 | 12   |

【问题讨论】:

使用pyspark.sql.functions.randwhen。如果随机值 null。这是一个非常相似的示例:Spark dataframe add new column with random data。这不是一个确切的骗局,所以如果这不能回答你的问题,我可以发布一个答案。 参见:Random numbers generation in PySpark 【参考方案1】:

感谢@pault,我能够使用他发布的问题回答我自己的问题,您可以找到here

基本上我是这样运行的:

import pyspark.sql.functions as f
df1 = df.withColumn('Val', f.when(f.rand() > 0.25, df1['Val']).otherwise(f.lit(None))

这将随机选择具有“Val”列的值并将其变为无值

【讨论】:

以上是关于在pyspark中将值随机更改为空值的最有效方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

查询与 Hive QL 中另一列中的每个值关联的最短字符串值的更有效方法

如何在 Pyspark 中将字符串更改为时间戳?

处理空值的最优雅方法是啥

在 Pyspark 中将列类型从字符串更改为日期

在 Pyspark 中将字符串更改为时间戳

在 hive 或 pyspark 中将双数组字段更改为单个数组