Использование regex_extract для l oop через список строк Pyspark - PullRequest
1 голос
/ 03 августа 2020

У меня есть список, полный строк.

List = ['NYC','Austin','San Diego', 'New Orleans','LA']

И у меня есть этот фрейм данных с одним столбцом, «сырым» в нем. Все значения в "raw" являются значениями словаря. Итак, sth вроде:

{'NYC':'COOL','Austin':'mild','San Diego':'hot','New Orleans':'cold','LA':'CHILL'}

У меня есть l oop, который я хочу извлечь значения из "сырого" столбца, в котором есть строки в списке выше, используя regex_extract, и создать новый столбец для каждого в Фрейм данных Pyspark.

for field in list:
    df = df \
    .withColumn(field, F.regexp_extract("raw",''+urllib.quote(field)+':"([^"]*)"', 1)) 

Но когда я это делаю, это не работает.

Итак, конечная цель - иметь все эти столбцы: 'raw', 'NY C', 'Austin', 'San D iego', 'New Orleans', 'LA'.

Хотите знать, как здесь принимать значения параметров?

1 Ответ

0 голосов
/ 04 августа 2020

Попробуйте это

schema = df.select(schema_of_json(df.select(regexp_replace('raw',' ','_')).first()[0])).first()[0]


df.select(from_json(regexp_replace('raw',' ','_'),schema).alias('data')).\
   select('data.*').show()

+------+-----+----+-----------+---------+
|Austin|   LA| NYC|New_Orleans|San_Diego|
+------+-----+----+-----------+---------+
|  mild|CHILL|COOL|       cold|      hot|
|  mild|CHILL|COOL|       cold|      hot|
+------+-----+----+-----------+---------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...