好吧,那似乎很容易,但我找不到任何解决办法或对它的反应。我只是有一个包含满为空的列的dataframe,我只想随机地填充"s“或"n”。
我试过了
df.foreach(f=>{
if(random)
f.get(4) = "s"
else{f.get(4) = "n"}
})`
但是不起作用,因为我认为f只是一个列表,而不是伪的实际值:
for(i=0;i<max_rows;i++)
if(prob<.5)
{df[i]["column_field"] == "s"}
else
{df[i]["column_field"] == "n"}发布于 2022-11-21 14:40:48
替换所有整数列和长列
df.na.fill(0)
.show(false)用特定列替换
df.na.fill(0,Array("population"))
.show(false)字符串类型所有列
df.na.fill("")
.show(false)特定列
df.na.fill("unknown",Array("city"))
.na.fill("",Array("type"))
.show(false)发布于 2022-11-22 05:48:59
对于您的问题,每一行都有新值。
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions._
import spark.implicits._
val df1 = Seq((0.5f, "v1"), (0.2f, "v2"), (1f, "v3"), (4f, "v4"))
.toDF("prob", "column_field")
df1.show(false)
/*
+----+------------+
|prob|column_field|
+----+------------+
|0.5 |v1 |
|0.2 |v2 |
|1.0 |v3 |
|4.0 |v4 |
+----+------------+
*/
val resDF = df1.withColumn(
"column_field",
when(col("prob") <= 0.5f, "s")
.otherwise("n")
)
resDF.show(false)
/*
+----+------------+
|prob|column_field|
+----+------------+
|0.5 |s |
|0.2 |s |
|1.0 |n |
|4.0 |n |
+----+------------+
*/https://stackoverflow.com/questions/74518429
复制相似问题