2017-05-24 13 views

答えて

0

randint関数は必要なものです。2つの数値の間にランダムな整数を生成します。 '年齢'列のfillna spark関数で適用します。

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

このコードスニペットは本当にに役立ちます(// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)[説明を含む]、疑問を解決するかもしれないがあなたの投稿の質を向上させる。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。あなたのコードに説明的なコメントを詰め込まないようにしてください。これは、コードと説明の両方の可読性を低下させます! – kayess

1

あなたは同じ乱数でNULL値を交換したいのですが、あなたは各年齢のためにランダムな値が欲しいならば、あなたが何か合体とF.randを行う必要がある場合はマーラの答えが正しいですか()下図のように:

import pyspark.sql.functions as F 
from pyspark.sql.functions import lit 
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| 
+---+---+-----+----+----+ 
関連する問題