Как извлечь информацию из столбца json_like из фрейма данных pyspark?

Я выполняю анализ с помощью фрейма данных pyspark.

Там один столбец назывался: json_data. Это выглядит так:

введите здесь описание изображения

Затем я попытался преобразовать его в формат типа словаря, используя следующий код:

from pyspark.sql.functions import udf
func = udf(lambda x: eval(x))
df_beer = df_beer.withColumn('json_data_new', func(df_beer.json_data))

После конвертации новый столбец 'json_data_new' выглядит так

введите здесь описание изображения

Затем я проверил тип данных старого и нового столбцов, оба они по-прежнему строкового типа. введите здесь описание изображения

Вопрос: как извлечь числа, связанные с ключом "2_QTDE", и сохранить их как новый столбец?

Я знал, что это json-подобная строка, и мне было трудно иметь дело с этим форматом.

Я попробовал способ python, используя ключ словаря, но он не работает.

Итак, я подумал, может быть, мне нужно написать функцию для извлечения чисел из json_data_new:

df_beer = df_beef.WithColumn('newColumn', func_extract(df_beer.json_data_new))

Как правильно определить функцию func_extract? Спасибо!


person Elsa Li    schedule 18.04.2018    source источник
comment
Пожалуйста, не размещайте изображения. кода.   -  person pault    schedule 18.04.2018
comment
@pault Спасибо за предложение. Интересно, поскольку тип столбца является строковым, можно ли использовать сопоставление с регулярным выражением?   -  person Elsa Li    schedule 18.04.2018
comment
@QianLi вы, вероятно, могли бы использовать регулярное выражение, но я бы не рекомендовал его. Прочтите этот пост.   -  person pault    schedule 18.04.2018