Apache spark PySpark:fillna但用于字符串/正则表达式匹配
我是否可以执行类似于Apache spark PySpark:fillna但用于字符串/正则表达式匹配,apache-spark,pyspark,Apache Spark,Pyspark,我是否可以执行类似于fillna的操作,除了不匹配NA列之外,我是否可以执行类似于字符串包含或正则表达式匹配的操作 例如,“我的位置”列的值类似于美国,美国,例如有时是美国纽约。我想把这样的东西匹配成一个值,比如说United States。我该怎么做 定义映射 查找=[ (“美国|美国|美国”、“美国”), (“英国|联合王国”、“联合王国”) ] 当 从pyspark.sql导入函数为F 从functools导入reduce df=spark.createDataFrame( [“美国”、
fillna
的操作,除了不匹配NA列之外,我是否可以执行类似于字符串包含或正则表达式匹配的操作
例如,“我的位置”列的值类似于美国
,美国
,例如有时是美国纽约
。我想把这样的东西匹配成一个值,比如说United States
。我该怎么做 定义映射
查找=[
(“美国|美国|美国”、“美国”),
(“英国|联合王国”、“联合王国”)
]
当
从pyspark.sql导入函数为F
从functools导入reduce
df=spark.createDataFrame(
[“美国”、“美国”、“美国纽约”、“英国”、“英国伦敦”],
“字符串”
)
国家=减少(
λacc,r:F.when(F.col(“值”).rlike(r[0]),F.lit(r[1])。否则(acc),
查找,
F.lit(“未知”))
df.withColumn(“country”,country).show()
# +--------------------+--------------+
#|价值|国家|
# +--------------------+--------------+
#|美国|美国|
#|美国|美国|
#|美国纽约|美国|
#|英国|英国|
#|英国伦敦…|英国|
# +--------------------+--------------+
或加入
df.交叉连接(F.broadcast(
createDataFrame(查找,(“模式”,“国家”))
)).其中(F.expr(“类似于模式的值”).drop(“模式”).show()
# +--------------------+--------------+
#|价值|国家|
# +--------------------+--------------+
#|美国|美国|
#|美国|美国|
#|美国纽约|美国|
#|英国|英国|
#|英国伦敦…|英国|
# +--------------------+--------------+
很棒的东西!非常感谢。