У меня есть искровой фрейм данных ~ 70 мил строк с 3 столбцами ['id', 'date', 'val'] и вложенным словарем в виде
dict = {
'A' = {
'2018-09-31' = val1,
'2018-10-01' = val2
}
}
A - идентификаторстолбец и есть еще один столбец для дат.Я пытаюсь обновить val, который находится в другом столбце, на основе этого вложенного словаря, доступного, например, dict ['A'] ['2018-09-31'].Кроме того, обновление будет только в том случае, если A содержится в списке indexList.
Я посмотрел и попробовал методы, приведенные ниже:
- Обновление столбца данныхв spark
- заменить значения одного столбца в искровой df значениями словаря (pyspark)
- 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)
Сообщение об ошибке, которое я получаю, является непредсказуемым: «Столбец»
обновление: я избежал этой проблемы, создав новый столбец ключа строки, объединяющий два столбца, используемых в качестве ключей