web-dev-qa-db-ja.com

pysparkでランダムな値を持つ新しい列を作成する方法は?

パンダでランダムな値で新しい列を初期化しようとしました。私はこのようにしました

df['business_vertical'] = np.random.choice(['Retail', 'SME', 'Cor'], df.shape[0])

Pysparkでそれを行うにはどうすればよいですか?

4
subash poudel

値のリストを生成してから、ランダムに抽出するだけです。

from pyspark.sql import functions as F

df.withColumn(
  "business_vertical",
  F.array(
    F.lit("Retail"),
    F.lit("SME"),
    F.lit("Cor"),
  ).getItem(
    (F.Rand()*3).cast("int")
  )
)
9
Steven

Pyspark.sql.functions.Rand()を使用できます

df.withColumn('Rand_col', F.Rand()).show()  
0
Pintu

乱数の場合:

import random
randomnum= random.randint(1000,9999)

または numpy.random.choice

import org.Apache.spark.sql.functions.lit
val newdf = df.withColumn("newcol",lit("your-random"))

または: pandas.Series.combine_first

s1 = pd.Series([1, np.nan])
s2 = pd.Series([3, 4])
s1.combine_first(s2)
0