我正在嘗試遍歷 pyspark 資料框并在特定位置后獲取值。資料將類似于:

我需要每一行中的.和 (空格)之間的值。例如SNO=1,我需要1.
我嘗試撰寫下面的代碼,它說列不可迭代
df3 = df2.withColumn("value", substring(df2.ColumnValue,instr(df2.ColumnValue,
'.') 1, instr(df2.ColumnValue, ' ') - instr(df2.ColumnValue, '.') - 1))
有人可以幫忙嗎?
uj5u.com熱心網友回復:
REGEXP_EXTRACT 應該可以解決問題:
regexp_EXTRACT(<column>,<regex>,<group>)
對于您的正則運算式,請嘗試(?<=\.)(.*?)(?=\ ). 這是使用向前看和向后看。這是一個很好的參考,它比我能更好地解釋它。
uj5u.com熱心網友回復:
就像@Andrew 說的,regexp_extract在這種情況下是最好的選擇。我的正則運算式有點不同[^\.] \.([^\s] )。你可以在這里玩它https://regex101.com/r/cBtiT7/1
from pyspark.sql import functions as F
df.withColumn('a', F.regexp_extract('col', '[^\.] \.([^\s] )', 1)).show()
-------------------- ---
| col| a|
-------------------- ---
| H1.1 Hello World| 1|
|H02.11 Hello World 2| 11|
-------------------- ---
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/345655.html
標籤:Python 阿帕奇火花 火花 apache-spark-sql
上一篇:AmazonDeequ(Spark Scala)-java.lang.NoSuchMethodError:'scala.Optionorg.apache.spark.sql.catalyst
