我有一个包含多列的数据框。
>>> 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)
答案 0 :(得分:2)
只需使用正确的正则表达式:
SELECT SUM(e.Quantity) AS SumQuantity
FROM MY_TABLE,
XMLTABLE('/Receive/ReceiptDetails/ReceiptDetail'
PASSING XMLTYPE(MY_TABLE.MY_XML_COLUMN)
COLUMNS
Quantity NUMBER PATH 'Quantity') as e
答案 1 :(得分:1)
要修改数据框df
并将regexp_replace
应用于listOfColumns
给定的多列,您可以像这样使用foldLeft:
val newDf = listOfColumns.foldLeft(df)((acc, x) => acc.withColumn(x, regexp_replace(col(x), ..., ...)))