получение ошибки при использовании isin с оператором case when в pyspark - PullRequest
1 голос
/ 27 мая 2020

Я попытался запустить выражение в pyspark, но не смог его запустить. Пожалуйста, помогите мне использовать в этом случае с оператором .isin.

-> geo_region1 - новый столбец, а geo_region - существующий столбец с данными (BD ',' BT ',' BN ',' KH ',' CN ',' TW ',' HK ',' IN ',' ID ',' JP ',' KP ',' KR ',' LA ',' MY ',' MV ',' MN ',' MM ')

DF2 = df2.withColumn("geo_region1", expr("case when(LOWER(geo_region).isin ('BD','BT','BN','KH','CN','TW','HK','IN','ID','JP','KP','KR','LA','MY','MV','MN','MM')) then 'APAC' end"))

Результат: geo_region1 = APA C при совпадении условий

Спасибо

1 Ответ

3 голосов
/ 27 мая 2020

Вы можете сделать это так

import pyspark.sql.functuons as f
Li = ['BD','BT','BN','KH','CN','TW','HK','IN','ID','JP','KP','KR','LA','MY','MV','MN','MM']
DF2 = df2.withColumn("geo_region1",f.when(f.upper(f.col('geo_region')).isin(Li), f.lit('APAC') ).when(f.upper(f.col('geo_region')).isin(Li2), f.lit('EMEA') ).when(f.upper(f.col('geo_region')).isin(Li3), f.lit('US') ).otherwise(f.lit('unknown'))

Li2 и Li3 будут списком, который вы хотите сравнить для EMEA и США соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...