基于嵌套字典更新pyspark dataframe列

时间:2018-10-23 21:24:32

标签: python apache-spark dictionary dataframe pyspark

我有一个约3千万行,3列['id','date','val']的spark数据帧 和一个嵌套字典,形式为

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

A是ID列,日期还有另一列。 我正在尝试基于此嵌套更新另一列中的val 例如,可通过dict ['A'] ['2018-09-31']访问的字典。 另外,仅当列表indexList中包含A时,才进行更新。

我已经查看并尝试了以下方法:

  1. Updating a dataframe column in spark
  2. replace values of one column in a spark df by dictionary key-values (pyspark)
  3. Pyspark: Replacing value in a column by searching a dictionary

类似下面的方法不起作用

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)

我收到的错误消息是无法散列的类型:“列”

更新:我通过创建一个新的字符串键列来合并两个用作键的列,从而避免了这个问题

0 个答案:

没有答案