pyspark:根据另一列中包含的字符串创建列

时间:2017-05-22 21:51:02

标签: pyspark

如何通过使用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"))

1 个答案:

答案 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()