如何通过使用Pyspark提取某个字符串来减少列中的噪音。请查看下表。而不是只有2个类别,额外的文本(持续时间)搞砸了任何分组。由下面的UDF创建的列duration1应该解决这个问题,但是运算符类似于" value.contains()"," Like"或" in"不见了。
持续时间|工期1 |
全天|全天|
全天x |其他|
半天|半天|
半天早晨|其他|
def duration_simple(value):
if value == "Full day": return 'Full day'
elif value == "Half-day": return 'Half day'
else: return 'other'
udfduration_simple = udf(duration_simple, StringType())
new_df= old_df.withColumn("duration1", udfduration_simple("duration"))
答案 0 :(得分:0)
你可以使用like()函数,类似于SQL
from pyspark.sql import functions as F
new_df= df.select( df.duration, F.when(df.duration.like("%Full day%"),"Full day").when(df.duration.like("%Half-day%"),"Half day").otherwise("other").alias("duration1")).show()