обновление столбца данных pyspark на основе вложенного словаря - PullRequest
0 голосов
/ 24 октября 2018

У меня есть искровой фрейм данных ~ 70 мил строк с 3 столбцами ['id', 'date', 'val'] и вложенным словарем в виде

dict = {
    'A' = {
        '2018-09-31' = val1,
        '2018-10-01' = val2
    }
}

A - идентификаторстолбец и есть еще один столбец для дат.Я пытаюсь обновить val, который находится в другом столбце, на основе этого вложенного словаря, доступного, например, dict ['A'] ['2018-09-31'].Кроме того, обновление будет только в том случае, если A содержится в списке indexList.

Я посмотрел и попробовал методы, приведенные ниже:

  1. Обновление столбца данныхв spark
  2. заменить значения одного столбца в искровой df значениями словаря (pyspark)
  3. Pyspark: замена значения в столбцепри поиске в словаре

что-то похожее на приведенное ниже не будет работать

update_func = (F.when(F.col('id').isin(indexList), mydict[F.col('id')][F.col('date')]).otherwise(F.col('val')))
df = df.withColumn('new_val, update_func)

Сообщение об ошибке, которое я получаю, является непредсказуемым: «Столбец»

обновление: я избежал этой проблемы, создав новый столбец ключа строки, объединяющий два столбца, используемых в качестве ключей

...