首页 > 解决方案 > 如何在Scala中查找df列名是否包含子字符串

问题描述

我的 df 有多个列。我想检查一个列名是否包含子字符串。比如SQL中的%。

我尝试使用这个,但似乎不起作用。我不想给出全名来查找该列是否存在。

如果我能找到此列,我还想使用.withColumnRename 此类重命名该列

if (df.columns.contains("%ABC%" or "%BCD%")) df.withColumnrename("%ABC%" or "%BCD%","ABC123") else println(0)

标签: scaladataframeapache-spark

解决方案


也许你可以试试这个。

  • 过滤器可以帮助您选择需要更新的列。
  • 在方法中写下你的更新逻辑flodLeft()()

flodLeft在 scala 中是一个有用的方法。如果您想了解更多关于 flodLeft 的信息,可以scala foldLeft example在 google 中搜索。

所以,祝你好运。

df.schema.fieldNames.map(_.toUpperCase).filter(x => !x.contains("")).foldLeft(df)((a,b) => {
      a.withColumnRenamed(b, ("abc_" + b).toLowerCase() )
    })

推荐阅读