dataframe - 如何通过对现有列执行一些转换来使用 withcolumn 添加列?
问题描述
我有一个带有列的简单 csv 文件(id:Integer,Name:String,Gender:String)
。我想使用 withColumn 向这个数据框添加一列。我知道第一个参数是列名,但不太确定如何传递将按性别分组的第二个参数。有人可以帮我弄这个吗?
我试过使用df.withColumn("Count",df.groupby("Gender").count())
,但它给出了类型不匹配错误,说它需要一个列类型但得到一个数据框。我尝试过使用col()
也期望它类型转换它。
val newDf=df.withColumn("count",col(df.groupBy("Gender").count()))
我希望添加一个带有计数列的新数据框。
解决方案
我想这就是你要找的,window
函数和count
函数 的使用
import spark.implicits._
val df = Seq(
(1, "name1", "M"),
(2, "name2", "M"),
(3, "name3", "M"),
(4, "name4", "M"),
(5, "name5", "F"),
(6, "name6", "F"),
(7, "name7", "M")
).toDF("id", "Name", "Gender")
val window = Window.partitionBy("Gender")
df.withColumn("count", count($"Gender").over(window))
.show(false)
输出:
+---+-----+------+-----+
|id |Name |Gender|count|
+---+-----+------+-----+
|5 |name5|F |2 |
|6 |name6|F |2 |
|1 |name1|M |5 |
|2 |name2|M |5 |
|3 |name3|M |5 |
|4 |name4|M |5 |
|7 |name7|M |5 |
+---+-----+------+-----+
推荐阅读
- api - Symfony - 如果找不到实体,则添加回调
- java - 如何使用嵌套生成器编写 jqwik 生成器方法
- scala - Spark Dataframe 未在管道“|”上拆分 用于日志文件
- html - 行包装容器内的图片溢出一点
- angular - Angular Material Reactive Forms 使用 HTML mat-form-field 中的验证器
- python - 我可以从已知比例的图像中计算相机姿势吗?
- python - 我们如何检查模拟请求是否真的是正确的?
- scala - 如何在 Scala 中正确使用模棱两可的隐式进行类型否定
- chirp - Chirp SDK 中是否有注入录制后处理的音频文件的方法?
- c++ - 使用 _Generic 定义宏给出不允许的类型名