2017-05-22 9 views
0

Pysparkを使用して特定の文字列を抽出することで、列のノイズを減らす方法を教えてください。下記の表をご確認ください。 2つのカテゴリのみを持つのではなく、追加のテキスト(期間内)はどのグループにも繋がりません。下のUDFによって作成された列duration1はこの問題を解決するはずですが、 "value.contains()"、 "Like"または "in"のような演算子はありません。pyspark:別の列に含まれる文字列に基づいて列を作成する

期間|期間1 |
1日| 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

を使用することができますか?単純にケースステートメント(spark sql)を使用しないでください – tbone

答えて

0

あなたはなぜUDFを使用して、()関数のように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() 
+0

完璧、おかげで多くのあなたの助けに! –

関連する問題