首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >访问数据火花的所有行的字段

访问数据火花的所有行的字段
EN

Stack Overflow用户
提问于 2022-11-21 11:48:09
回答 2查看 42关注 0票数 0

好吧,那似乎很容易,但我找不到任何解决办法或对它的反应。我只是有一个包含满为空的列的dataframe,我只想随机地填充"s“或"n”。

我试过了

代码语言:javascript
运行
复制
df.foreach(f=>{
  
  if(random)
    f.get(4) = "s"
  else{f.get(4) = "n"}
})

`

但是不起作用,因为我认为f只是一个列表,而不是伪的实际值:

代码语言:javascript
运行
复制
for(i=0;i<max_rows;i++)
  if(prob<.5)
   {df[i]["column_field"] == "s"}
  else
   {df[i]["column_field"] == "n"}
EN

回答 2

Stack Overflow用户

发布于 2022-11-21 14:40:48

替换所有整数列和长列

代码语言:javascript
运行
复制
df.na.fill(0)
  .show(false)

用特定列替换

代码语言:javascript
运行
复制
df.na.fill(0,Array("population"))
  .show(false)

字符串类型所有列

代码语言:javascript
运行
复制
df.na.fill("")
  .show(false)

特定列

代码语言:javascript
运行
复制
df.na.fill("unknown",Array("city"))
  .na.fill("",Array("type"))
  .show(false)
票数 0
EN

Stack Overflow用户

发布于 2022-11-22 05:48:59

DataFrame na填充

类DataFrame

对于您的问题,每一行都有新值。

代码语言:javascript
运行
复制
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           |
+----+------------+
*/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74518429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档