在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.rand
和when
。如果随机值 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中将值随机更改为空值的最有效方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章