如何替换火花数据框所有列中的多个字符?
Posted
技术标签:
【中文标题】如何替换火花数据框所有列中的多个字符?【英文标题】:How can I replace multiple characters from all columns of a spark dataframe? 【发布时间】:2017-11-18 01:51:29 【问题描述】:我有一个包含多列的数据框。
>>> df.take(1)
[Row(A=u'dt:dt=string, content=Prod', B=u'dt:dt=string, content=Staging')]
我想从 df 的 A 列和 B 列的值中删除大括号“”和“”。我知道我们可以使用:
df.withColumn('A',regexp_replace('A','//',''))
df.withColumn('A',regexp_replace('A','//',''))
df.withColumn('B',regexp_replace('B','//',''))
如何为 Spark 数据框的所有列动态替换字符? (熊猫版如下图)
df = df.replace('':'','':'',regex=True)
【问题讨论】:
【参考方案1】:只要使用正确的正则表达式:
df.withColumn("A", regexp_replace("A", "[]", ""))
【讨论】:
我们如何将上述语句同时应用于多个列?假设我的数据框中有 10 列。【参考方案2】:要修改数据框df
并将regexp_replace
应用于listOfColumns
给出的多个列,您可以像这样使用 foldLeft:
val newDf = listOfColumns.foldLeft(df)((acc, x) => acc.withColumn(x, regexp_replace(col(x), ..., ...)))
【讨论】:
以上是关于如何替换火花数据框所有列中的多个字符?的主要内容,如果未能解决你的问题,请参考以下文章