Dataframe 在Pyspark中用随机数填充na

Dataframe 在Pyspark中用随机数填充na,dataframe,random,pyspark,Dataframe,Random,Pyspark,我正在使用Pyspark数据帧 我想用14到46范围内的随机值更新年龄列中的NA值 我该怎么做呢?randint函数就是您需要的:它在两个数字之间生成一个随机整数。在“年龄”列的fillna spark函数中应用它 from random import randint df.fillna(randint(14, 46), 'age').show() randint函数就是您需要的:它在两个数字之间生成一个随机整数。在“年龄”列的fillna spark函数中应用它 from random im

我正在使用Pyspark数据帧

我想用14到46范围内的随机值更新年龄列中的NA值


我该怎么做呢?

randint函数就是您需要的:它在两个数字之间生成一个随机整数。在“年龄”列的fillna spark函数中应用它

from random import randint
df.fillna(randint(14, 46), 'age').show()

randint函数就是您需要的:它在两个数字之间生成一个随机整数。在“年龄”列的fillna spark函数中应用它

from random import randint
df.fillna(randint(14, 46), 'age').show()

如果您想用相同的随机数替换空值,则Mara的答案是正确的,但如果您想为每个年龄使用一个随机值,则应执行以下所示的合并和F.rand操作:

from pyspark.sql import functions as F
from pyspark.sql.types import IntegerType
from random import randint

df = sqlContext.createDataFrame(
    [(1, "a", 23.0), (3, "B", -23.0)], ("x1", "x2", "x3"))

df = (df
    .withColumn("x4", F.lit(None).cast(IntegerType()))
    .withColumn("x5", F.lit(None).cast(IntegerType()))
    )
    
df.na.fill({'x4':randint(0,100)}).show()
df.withColumn('x5', F.coalesce(F.col('x5'), (F.round(F.rand()*100)))).show()


+---+---+-----+---+----+
| x1| x2|   x3| x4|  x5|
+---+---+-----+---+----+
|  1|  a| 23.0|  9|null|
|  3|  B|-23.0|  9|null|
+---+---+-----+---+----+
+---+---+-----+----+----+
| x1| x2|   x3|  x4|  x5|
+---+---+-----+----+----+
|  1|  a| 23.0|null|44.0|
|  3|  B|-23.0|null| 2.0|
+---+---+-----+----+----+

如果您想用相同的随机数替换空值,则Mara的答案是正确的,但如果您想为每个年龄使用一个随机值,则应执行以下所示的合并和F.rand操作:

from pyspark.sql import functions as F
from pyspark.sql.types import IntegerType
from random import randint

df = sqlContext.createDataFrame(
    [(1, "a", 23.0), (3, "B", -23.0)], ("x1", "x2", "x3"))

df = (df
    .withColumn("x4", F.lit(None).cast(IntegerType()))
    .withColumn("x5", F.lit(None).cast(IntegerType()))
    )
    
df.na.fill({'x4':randint(0,100)}).show()
df.withColumn('x5', F.coalesce(F.col('x5'), (F.round(F.rand()*100)))).show()


+---+---+-----+---+----+
| x1| x2|   x3| x4|  x5|
+---+---+-----+---+----+
|  1|  a| 23.0|  9|null|
|  3|  B|-23.0|  9|null|
+---+---+-----+---+----+
+---+---+-----+----+----+
| x1| x2|   x3|  x4|  x5|
+---+---+-----+----+----+
|  1|  a| 23.0|null|44.0|
|  3|  B|-23.0|null| 2.0|
+---+---+-----+----+----+

虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!如果我不希望我的随机数从0开始,但让我们说从10开始呢?如果我不希望我的随机数从0开始,但让我们说从10开始呢?