dataframe - 比较 Spark 和 Scala 中的两个 DataFrame
问题描述
我有一个从 CSV 文件加载数据的 DataFrame,我正在尝试一些数据清理活动,其中一项任务是查找唯一性占总数或行数的百分比,如果该百分比小于某个阈值,我只会删除这些列。这是我到目前为止所拥有的:
val df = spark.read
.format("csv")
.option("delimiter", ";")
.option("header", "true") //first line in file has headers
//.option("mode", "DROPMALFORMED")
.load("work/youtube_videos.csv")
val df2 = df.select(df.columns.map(c => (lit(100) * countDistinct(col(c)) / count(col(c))).alias(c)): _*)
val colsToDrop = df2.selectExpr(df2.first().getValuesMap[Double](df2.columns).filter(elem => elem._2 < 1.0).keys.toSeq: _*).columns
colsToDrop foreach println
所以现在我有两个 DataFrame,我将不得不使用 colsToDrop DataFrame,我已经确定了要删除的列和原始 DataFrame。我可以在原始 DataFrame 上使用这个 colsToDrop Array 并摆脱它们。这是一个好主意/方法吗?有什么有效的方法吗?
解决方案
这就是我目前为得到我想要的东西而做的事情:
val newDF = df.drop(colsToDrop:_*)
newDF.show(false)
推荐阅读
- python - 突然收到错误 pywintypes.com_error MAPI-error-number: 80004001。发生了什么?
- flutter - 颤振飞镖正则表达式,通过实际路线获取路线名称
- python - Python:从 .txt 文件目录创建文件列表
- java - Java - 让运行时使用所有可用的 RAM
- c# - GetAccessTokenAsync 静默失败,无法在调试器中捕获问题
- webpack - 如何不将 CSS 提取到 vue-cli3 中的单独文件中?
- django - Django模型添加uuid
- android - 离子表单提交调用导航到而不是提交函数
- docker - 在 db2 LuW Docker 容器中持久化数据
- regex - 需要解释 Octave 中的表达式 '<[^<>]+>'