scala - 给定列号时创建数据框
问题描述
当我给出一个像任何数字'n'这样的列号时,它应该创建一个包含那么多列的数据框。目前通常如下所示。
val list = sc.parallelize(List((1, "b", "c", "d"))).toDF()
这将提供 4 列,但如果我想将列号作为参数传递并创建一个数据框。
包含任何数据或空数据框的列数,如果有办法,请告诉我。提前致谢
解决方案
给定列数n:Int
,这将返回一个空数据框:
def createEmptyDf(n:Int) = {
val df = spark.emptyDataFrame
(1 to n).foldLeft(df){ case (resDf, i) => resDf.withColumn(s"$i", lit(null))}
}
看到你的笔记后,你也可以用下面的 groupby/pivot 来转置:
val df = (1 to n).map(i => (i, 0)).toDF()
.groupBy($"_2").pivot($"_1")
.agg(first(lit(0)))
.drop($"_2")
推荐阅读
- c# - 在 WaitAndRetryAsync 之后返回实际错误代码
- python - 如何遍历数据框以选择满足条件的行,包括它们在python中的索引
- powershell - 关闭 SMBv1 导致网络计算机枚举中断
- node.js - 直接提交表单请求url
- r - colMeans 在 R 中不起作用
- json - Angular Firebase将Observable转换为普通对象以在组件内使用数据
- javascript - 在 Javascript 中使用 setInterval 和 clearInterval 需要帮助
- docker - 如何将 docker compose yaml 文件转换为 Kubernetes yaml 文件以进行部署?
- arrays - 为什么我们不能在现代 C++ 中省略具有默认初始值设定项列表的数组类型成员变量的容量?
- python - Youtube 搜索并使用 bs4 获得更多 30 个结果